猿问

广义代码中某些列的一阶差分

df   fruit   date              price   cost         var1   

0     apple    2017-01-01         2      2          20    

1     apple    2017-01-02         3      3          40 

2    banana    2017-01- 02        4      4          20 

2    banana    2017-01-02         4      4          10

有没有办法生成一阶差分数据帧(fd_df),该数据框保留水果,var1,日期与 df ,但通过水果对所有剩余变量进行一阶差分?我有 20 列需要一阶差分(包括价格和成本),因此需要通用代码。


aluckdog
浏览 120回答 1
1回答

www说

IIUC,您可以set_index保留想要保留的列并groupby.diff在水果上使用,然后reset_index将索引恢复为列。df_ = (df.set_index(['fruit','date','var1'])         .groupby(level='fruit').diff()         .reset_index()      )print(df_)    fruit        date  var1  price  cost0   apple  2017-01-01    20    NaN   NaN1   apple  2017-01-02    40    1.0   1.02  banana  2017-01-02    20    NaN   NaN3  banana  2017-01-02    10    0.0   0.0
随时随地看视频慕课网APP

相关分类

Python
我要回答