Pandas,groupby / Grouper月份无视这一年

时间:2018-04-13 08:00:28

标签: python-3.x pandas

我在Pandas df中有以下数据:

index;Aircraft_Registration;issue;Leg_Number;Departure_Time;Departure_Date;Arrival_Time;Arrival_Date;Departure_Airport;Arrival_Airport
0;XXA;0;QQ464;01:07:00;2013-12-01;03:33:00;2013-12-01;JFK;AMS
1;XXA;0;QQQ445;06:08:00;2013-12-01;12:02:00;2013-12-01;AMS;CPT
2;XXA;0;QQQ446;13:04:00;2013-12-01;13:13:00;2013-12-01;JFK;SID
3;XXA;0;QQ446;14:17:00;2013-12-01;20:15:00;2013-12-01;SID;FRA
4;XXA;0;QQ453;02:02:00;2013-12-02;13:09:00;2013-12-02;JFK;BJL
5;XXA;0;QQ150;05:47:00;2018-12-03;12:37:00;2018-03-03;KAO;AMS
6;XXA;0;QQ457;15:09:00;2018-11-03;17:51:00;2018-03-03;AMS;AGP
7;XXA;0;QQ457;08:34:00;2018-12-03;22:47:00;2018-03-03;AGP;JFK
8;XXA;0;QQ458;03:34:00;2018-12-03;23:59:00;2018-03-03;ATL;BJL
9;XXA;0;QQ458;06:26:00;2018-10-04;07:01:00;2018-03-04;BJL;AMS

我希望将这些数据分组在忽略年份的月份上,因此理想情况下最终会有12个新数据帧,每个数据帧代表忽略年份的那些月份的事件。 我尝试了以下方法:

sort = list(df.groupby(pd.Grouper(freq='M', key='Departure_Date')))

这会产生一个包含每个月和每年的数据框的列表,在这种情况下会产生60个列表,其中很多都是空的,因为那个月没有数据。

我的预期结果是一个包含12个数据框的列表,每个月一个(1月,Februari等)

1 个答案:

答案 0 :(得分:2)

我认为1-12个月需要dt.monthJanuary-December需要dt.strftime

sort = list(df.groupby(df['Departure_Date'].dt.month))

或者:

sort = list(df.groupby(df['Departure_Date'].dt.strftime('%B')))