Pandas 大熊猫的日期时间按年份和月份分组
我正在从datetime列导出月份 我的数据如下:Pandas 大熊猫的日期时间按年份和月份分组,pandas,datetime,Pandas,Datetime,我正在从datetime列导出月份 我的数据如下: +--------------+----------------+ | Payment Date | Payable Amount | +--------------+----------------+ | 2016/5/31 | 20 | | 2016/5/28 | 50 | | 2016/5/21 | 70 | | 2016/5/20 |
+--------------+----------------+
| Payment Date | Payable Amount |
+--------------+----------------+
| 2016/5/31 | 20 |
| 2016/5/28 | 50 |
| 2016/5/21 | 70 |
| 2016/5/20 | 10|
| 2016/5/15 | 150|
+--------------+----------------+
我已尝试使用以下代码:
data.groupby([data['Payment Date'].dt.year,data['Payment Date'].dt.month])['Payable Amount'].sum()
其输出如下列所示:
年
月
数量
请注意,我曾尝试使用pd.Grouper('M),它抛出一个错误,认为该错误仅对DatetimeIndex、TimedeltaIndex或PeriodIndex有效,但得到了一个“Float64Index”实例
我期待这样的结果
+--------------+----------------+
| Payment Date | Payable Amount |
+--------------+----------------+
| 2016/5/1 | 300 |
| 2016/6/1 | 400 |
| 2016/7/1 | 500 |
| 2016/8/1 | 550 |
| 2016/9/1 | 600 |
+--------------+----------------+
使用
groupby
,将“付款日期”限定在月初:
(data.groupby(df['Payment Date'] - pd.offsets.MonthBegin(1))['Payable Amount']
.sum()
.reset_index())
Payment Date Payable Amount
0 2016-05-01 300
使用偏移对象进行减法是为了得到该月的开始日期:
df['Payment Date'] - pd.offsets.MonthBegin(1)
0 2016-05-01
1 2016-05-01
2 2016-05-01
3 2016-05-01
4 2016-05-01
Name: Payment Date, dtype: datetime64[ns]
如果付款日期列具有datetime类型,Grouper应该可以工作。演示:
产出:
Payment Date Payable Amount
0 2016-05-31 20
1 2016-05-28 30
2 2016-05-21 40
3 2017-05-20 50
4 2017-05-15 60
Payable Amount
Payment Date
2016-05-01 90
2016-06-01 0
2016-07-01 0
2016-08-01 0
2016-09-01 0
2016-10-01 0
2016-11-01 0
2016-12-01 0
2017-01-01 0
2017-02-01 0
2017-03-01 0
2017-04-01 0
2017-05-01 110
然后:
产出:
Payment Date Payable Amount
0 2016-05-31 20
1 2016-05-28 30
2 2016-05-21 40
3 2017-05-20 50
4 2017-05-15 60
Payable Amount
Payment Date
2016-05-01 90
2016-06-01 0
2016-07-01 0
2016-08-01 0
2016-09-01 0
2016-10-01 0
2016-11-01 0
2016-12-01 0
2017-01-01 0
2017-02-01 0
2017-03-01 0
2017-04-01 0
2017-05-01 110
请将所需输出修改为与数据更一致。我已编辑了所需输出。谢谢,它能工作。“你能解释一下你为什么要减法吗,而我却不理解代码……”克里希纳31编辑了一段解释。