按组计算行中的值之间的差异

时间:2018-09-12 13:05:20

标签: python pandas

我有这样的df

enter image description here

我需要为每个公司计算X1, X2, X3, X4 and X5之间的差异,但是我只知道如何计算整列之间的差异。

df['dX1'] = df['X1'].shift(-1) - df['X1']
df['dX2'] = df['X2'].shift(-1) - df['X2']
df['dX3'] = df['X3'].shift(-1) - df['X3']
...

这是一种不好的方法,因为它在X1行中用74减去了X1行中的73(这是两家不同的公司,这没有意义)。

我的问题是,如何计算每个期间和每个公司的行值之间的差异。例如。

enter image description here

(我可以一张一张地加载csvs并计算每个公司的差异,然后将所有合并到一个列表中,但是因为我有700个csv文件,所以需要2天的时间。)

1 个答案:

答案 0 :(得分:2)

我认为您需要DataFrameGroupBy.diff

cols = ['X1','X2','X3','X4','X5']
df1 = df.groupby('company')[cols].diff(-1)