遍历行以查找数据中的中断

时间:2019-01-18 11:28:18

标签: python pandas iteration

我有下表数据

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”类型何时中断,因此我只需要比较 type列的以下每个 strong>和下一个,并创建一个新列来说明比较结果。

这就是我想要得到的:

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     
...

我试图从这样的方式开始构建迭代的基础,但是我无法进行适当的比较:

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

还有其他方法可以比较行吗?

1 个答案:

答案 0 :(得分:0)

我认为您需要使用shiftduplicated测试每个Type列的第一个重复值,最后用numpy.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