在 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() 函数,但它似乎无法满足我的要求。有办法吗?
您可以选择 floor division of the index by 2
and use the result as a grouper, then take the first differences of the groups using 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
我在 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() 函数,但它似乎无法满足我的要求。有办法吗?
您可以选择 floor division of the index by 2
and use the result as a grouper, then take the first differences of the groups using 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