python数据按照分组进行频率分布_python – 按用户定义的月份范围对pandas dataFrame进行分组...

从十月到四月,将数据分组到冬季的最佳方法是什么?由于均匀分布的频率为

TimeGrouper,我不能从1972/1973年,1973/1974年等季节输出季节性的冬季月份…也许是一件小事,但我不知道如何在不开始的情况下做到这一点写一个矫枉过正的解决方案.

sd_x sd_y

1972-10-31 0.000000 0.709677

1972-11-30 1.720838 4.366667

1972-12-31 15.893438 5.600000

1973-01-31 6.256230 6.548387

1973-02-28 0.653714 53.142857

1973-03-31 0.000000 70.354839

1973-04-30 0.000000 11.700000

1973-10-31 0.000000 0.096774

1973-11-30 0.000000 4.266667

1973-12-31 0.394652 53.419355

1974-01-31 4.540915 46.645161

1974-02-28 2.978056 35.571429

1974-03-31 0.000000 4.967742

1974-04-30 0.000000 0.000000

1974-10-31 0.000000 0.064516

1974-11-30 0.000000 1.000000

1974-12-31 5.585954 20.096774

1975-01-31 50.498147 24.580645

1975-02-28 35.906097 22.000000

1975-03-31 0.457109 5.483871

1975-04-30 0.000000 0.433333

最佳答案 使用pd.offsets.MonthBegin将月份移回4

shifted_months = df.index - pd.offsets.MonthBegin(5)

shifted_months

DatetimeIndex(['1972-06-01', '1972-07-01', '1972-08-01', '1972-09-01',

'1972-10-01', '1972-11-01', '1972-12-01', '1973-06-01',

'1973-07-01', '1973-08-01', '1973-09-01', '1973-10-01',

'1973-11-01', '1973-12-01', '1974-06-01', '1974-07-01',

'1974-08-01', '1974-09-01', '1974-10-01', '1974-11-01',

'1974-12-01'],

dtype='datetime64[ns]', freq=None)

然后我们可以使用.year属性来分组和求和

df.groupby(shifted_months.year).sum()

sd_x sd_y

1972 24.524220 152.422427

1973 7.913623 144.967128

1974 92.447307 73.659139

我们可以用指数来提升指数

df.groupby(shifted_months.year).sum().rename(lambda x: '{}/{}'.format(x, x + 1))

sd_x sd_y

1972/1973 24.524220 152.422427

1973/1974 7.913623 144.967128

1974/1975 92.447307 73.659139

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值