为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

鸿蒙传说 2023-02-22 10:55:14
我有一个如下所示的数据框:Index                                  Diff2019-03-14 11:32:21.583000+00:00       02019-03-14 11:32:21.583000+00:00       22019-04-14 11:32:21.600000+00:00       132019-04-14 11:32:21.600000+00:00       142019-05-14 11:32:21.600000+00:00       192019-05-14 11:32:21.600000+00:00       27按月分组并在这几个月内取差的最佳方法是什么?使用该.diff()选项我能够找到每一行之间的差异,但我试图使用但df.groupby(pd.Grouper(freq='M'))没有成功。预期输出:    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任何帮助将非常感激!!
查看完整描述

1 回答

?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

根据您的日期是否在索引中,您可以注释掉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 pd

df = 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                       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


查看完整回答
反对 回复 2023-02-22
  • 1 回答
  • 0 关注
  • 65 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信