我有这样的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']
...
这是一种不好的方法,因为它在X1
行中用74
减去了X1
行中的73
(这是两家不同的公司,这没有意义)。
我的问题是,如何计算每个期间和每个公司的行值之间的差异。例如。
(我可以一张一张地加载csvs并计算每个公司的差异,然后将所有合并到一个列表中,但是因为我有700个csv文件,所以需要2天的时间。)
答案 0 :(得分:2)
我认为您需要DataFrameGroupBy.diff
:
cols = ['X1','X2','X3','X4','X5']
df1 = df.groupby('company')[cols].diff(-1)