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

如何使用 Python/Pandas 从日期字段按月分组

如何使用 Python/Pandas 从日期字段按月分组

牧羊人nacy 2021-11-23 19:49:02
我有一个 Dataframe df 如下:date               value_1    value_22018.07.06           10          02018.07.14           20          12018.07.27           20          22018.08.06           30          12018.08.09           40          32018.08.13           20          22018.09.10           30          12018.09.22           50          22018.10.09           20          32018.10.27           20          1我需要按月对上述数据进行分组以获得输出:date              value_1    value_22018.07.01           50          32018.08.01           90          62018.09.01           80          32018.10.01           40          4我怎样才能在熊猫中有效地做到这一点?
查看完整描述

3 回答

?
萧十郎

TA贡献1815条经验 获得超13个赞

尝试使用 pd.Grouper 和 freq = 'MS' 进行分组:


df.groupby(pd.Grouper(freq='MS', key='date')).sum().reset_index()

输出:


        date  value_1  value_2

0 2018-07-01       50        3

1 2018-08-01       90        6

2 2018-09-01       80        3

3 2018-10-01       40        4

而且,如果您想恢复点日期格式,可以使用以下命令:


df_out = df.groupby(pd.Grouper(freq='MS', key='date')).sum().reset_index()


df_out['date'] = df_out['date'].dt.strftime('%Y.%m.%d')


df_out

输出:


         date  value_1  value_2

0  2018.07.01       50        3

1  2018.08.01       90        6

2  2018.09.01       80        3

3  2018.10.01       40        4


查看完整回答
反对 回复 2021-11-23
?
慕容708150

TA贡献1831条经验 获得超4个赞


df.date=pd.to_datetime(df.date)

df.groupby(df.date+pd.offsets.MonthBegin(-1)).sum()

Out[171]: 

            value_1  value_2

date                        

2018-07-01       50        3

2018-08-01       90        6

2018-09-01       80        3

2018-10-01       40        4


查看完整回答
反对 回复 2021-11-23
?
MM们

TA贡献1886条经验 获得超2个赞

如果您将日期作为索引,则就像重新采样一样简单。


df.resample('MS').sum()

如果您还没有将其作为索引,则可以set_index.


df.set_index('date').resample('MS').sum()

两者都给你


            value_1  value_2

date                        

2018-07-01       50        3

2018-08-01       90        6

2018-09-01       80        3

2018-10-01       40        4


查看完整回答
反对 回复 2021-11-23
  • 3 回答
  • 0 关注
  • 458 浏览
慕课专栏
更多

添加回答

举报

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