繁体   English   中英

如何将当前行与前一行进行比较并增加 Mode 值

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM