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

时间:2019-03-07 16:19:48

标签: python pandas dataframe rows 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

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

    B   C
0  -2   9
1   2   10
2  -4  -1

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

2 个答案:

答案 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