首页 > 解决方案 > 遍历行以查找数据中的中断

问题描述

我有以下数据表

Sam. Type  Trace
E18  A     0.124    
E28  A     0.114     
E25  A     0.128    
E99  B     0.132     
E18  B     0.111     
E25  B     0.108
E99  C     0.132     
E18  C     0.111     
...

我需要做的是确定数据的“A”类型何时中断,因此我只需将列类型的以下每一与下一行进行比较,并创建一个新列来说明比较结果.

这就是我想要得到的:

Sam. Type  Trace Categ.
E18  A     0.124   A 
E28  A     0.114     
E25  A     0.128    
E99  B     0.132   B  
E18  B     0.111     
E25  B     0.108
E99  C     0.132   C  
E18  C     0.111     
...

我试图从这样的smth开始构建迭代的基础,但我无法进行正确的比较:

for index, row in sorted_data.iterrows(): if sorted_data['Type']== sorted_data['Type'].shift(-1): print('ok')

有没有其他方法来比较行?

标签: pythonpandasiteration

解决方案


我认为您需要使用or测试每Type列的第一个重复值,最后设置值是:shiftduplicatednumpy.where

更改数据的差异 - 另一组A

m1 = sorted_data['Type'] != sorted_data['Type'].shift()
m2 = ~sorted_data['Type'].duplicated()

sorted_data['Categ.1'] = np.where(m1, sorted_data['Type'], '')
sorted_data['Categ.2'] = np.where(m2, sorted_data['Type'], '')
print (sorted_data)
   Sam. Type  Trace Categ.1 Categ.2
0   E18    A  0.124       A       A
1   E28    A  0.114                
2   E25    A  0.128                
3   E99    B  0.132       B       B
4   E18    B  0.111                
5   E25    B  0.108                
6   E99    C  0.132       C       C
7   E18    C  0.111                
8   E18    A  0.148       A        
9   E28    A  0.144                
10  E25    A  0.858         

推荐阅读