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

dej*_*ich 6 python pandas

我有df这样的:

在此输入图像描述

我需要计算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']
...
Run Code Online (Sandbox Code Playgroud)

这是不好的方法,因为它是在线X1减去74X173相减(这是两家不同的公司,这没有意义)。

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

在此输入图像描述

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

jez*_*ael 7

我认为你需要DataFrameGroupBy.diff

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