簡體   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