获取一个新数据框,熊猫中每两行的差异

tzo*_*zou 4 python rows dataframe pandas difference

我在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
Run Code Online (Sandbox Code Playgroud)

我想做的是根据A列计算每两行的差异(当A = 1-A = 2时,基本上得到所有其他列的差异)。所以,我想提出这样的事情:

    B   C
0  -2   9
1   2   10
2  -4  -1
Run Code Online (Sandbox Code Playgroud)

我知道diff()函数,但似乎没有完成我想要的事情。有办法吗?

yat*_*atu 6

您可以将索引的下限除以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
Run Code Online (Sandbox Code Playgroud)