[英]How to compare current row with the previous row and increment the Mode value
我有 CSV 文件:
Notation RFRange PRIRange PSRange PDRange
AA100 1000 1.20793 1.20794 138.96
AA100 2000 1.20787 1.20788 119.61
CC200 2000 1.20770 1.20779 210.42
SS400 4000 1.20779 1.20789 77.51
BB200 1000 1.20789 1.20792 56.97
這就是我得到的:
Notation RFRange PRIRange PSRange PDRange Mode
AA100 1000 1.20793 1.20794 138.96 Mode2
AA100 2000 1.20787 1.20788 119.61 Mode2
CC200 2000 1.20770 1.20779 210.42 Mode2
SS400 4000 1.20779 1.20789 77.51 Mode2
BB200 1000 1.20789 1.20792 56.97 Mode2
我想要的是:當當前行與前一行不匹配時,增加模式。我應該怎么做?
Notation RFRange PRIRange PSRange PDRange Mode
AA100 1000 1.20793 1.20794 138.96 Mode1
AA100 2000 1.20787 1.20788 119.61 Mode2
CC200 2000 1.20770 1.20779 210.42 Mode3
SS400 4000 1.20779 1.20789 77.51 Mode4
BB200 1000 1.20789 1.20792 56.97 Mode5
代碼:
df['Mode'] = np.where((df['Notation'] == df['Notation'].shift()) & ((df['RFRange'] ==
df['RFRange'].shift()) & (df['PRIRange'] == df['PRIRange'].shift()) & (df['PDRange'] ==
df['PDRange'].shift()) & (df['PSRange'] == df['PSRange'].shift())),"Mode1","Mode2")
使用, df.shift
, df.any
& Series.cumsum
:
c = df.ne(df.shift()).any(axis=1).cumsum()
df['Mode'] = 'Mode' + c.astype(str)
# print(df)
Notation RFRange PRIRange PSRange PDRange Mode
0 AA100 1000 1.20793 1.20794 138.96 Mode1
1 AA100 2000 1.20787 1.20788 119.61 Mode2
2 CC200 2000 1.20770 1.20779 210.42 Mode3
3 SS400 4000 1.20779 1.20789 77.51 Mode4
4 BB200 1000 1.20789 1.20792 56.97 Mode5
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.