我有下表数据
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')
还有其他方法可以比较行吗?
答案 0 :(得分:0)
我认为您需要使用shift
或duplicated
测试每个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