繁体   English   中英

获取Pandas中每两行差异的新数据帧

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM