我在Pandas中有一个如上所述的数据框:
A B C
0 1 10 43
1 2 12 34
2 1 9 57
3 2 7 47
4 1 6 30
5 2 10 31
我想做的是根据A列计算每两行的差异(当A = 1-A = 2时,基本上得到所有其他列的差异)。所以,我想提出这样的东西:
B C
0 -2 9
1 2 10
2 -4 -1
我了解diff()函数,但似乎并没有完成我想要的事情。有办法吗?
答案 0 :(得分:6)
您可以将索引的CASE_INSENSITIVE
乘以2
并将结果用作分组器,然后使用floor division来获取组的第一组差异:
df.groupby(df.index//2)['B','C'].diff(-1).dropna().reset_index(drop=True)
B C
0 -2.0 9.0
1 2.0 10.0
2 -4.0 -1.0
答案 1 :(得分:1)
您可以按A
进行索引并减去:
x = df[df['A'] == 1].reset_index(drop=True).drop('A', axis=1)
y = df[df['A'] == 2].reset_index(drop=True).drop('A', axis=1)
x - y