[英]Get a new dataframe with difference of every two rows in Pandas
我在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()函数,但它似乎没有做我想要的事情。 有办法吗?
您可以将索引的最低分区乘以2
并将结果用作分组器,然后使用DataFrame.diff()
获取组的第一个差异:
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
你可以用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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.