[英]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.