按月、年等对每行之间的差异进行分组的最佳方法?

我有一个如下所示的数据框:


Index                                  Diff

2019-03-14 11:32:21.583000+00:00       0

2019-03-14 11:32:21.583000+00:00       2

2019-04-14 11:32:21.600000+00:00       13

2019-04-14 11:32:21.600000+00:00       14

2019-05-14 11:32:21.600000+00:00       19

2019-05-14 11:32:21.600000+00:00       27

按月分组并在这几个月内取差的最佳方法是什么?


使用该.diff()选项我能够找到每一行之间的差异,但我试图使用但df.groupby(pd.Grouper(freq='M'))没有成功。


预期输出:


    Index                       Diff

0   2019-03-31 00:00:00+00:00   2.0

1   2019-04-30 00:00:00+00:00   1.0

2   2019-05-31 00:00:00+00:00   8.0

任何帮助将非常感激!!


鸿蒙传说
浏览 68回答 1
1回答

人到中年有点甜

根据您的日期是否在索引中,您可以注释掉df1 = df.reset_index()。另外,如果索引DateTimeIndex在索引上,请检查其格式是否正确。如果格式不正确,则可以使用更改数据类型df.index = pd.to_datetime(df.index)。然后,您应该设置为更改Diff列df1.groupby(pd.Grouper(key='Index', freq='M'))['Diff'].diff(),然后使用完整数据框更改 groupby:输入:import pandas as pddf = pd.DataFrame({'Diff': {'2019-03-14 11:32:21.583000+00:00': 2,  '2019-04-14 11:32:21.600000+00:00': 14,  '2019-05-14 11:32:21.600000+00:00': 27}})df.index.name = 'Index'df.index = pd.to_datetime(df.index)代码:df1 = df.reset_index()df1['Diff'] = df1.groupby(pd.Grouper(key='Index', freq='M'))['Diff'].diff()df1 = df1.groupby(pd.Grouper(key='Index', freq='M'))['Diff'].max().reset_index()df1输出:    Index                       Diff0   2019-03-31 00:00:00+00:00   2.01   2019-04-30 00:00:00+00:00   1.02   2019-05-31 00:00:00+00:00   8.0
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python