如何使用Pandas将日期列表组织成月份和日期?

时间:2016-03-01 20:40:30

标签: pandas

我有一个近百万个日期的列表格式为DD-Mmm-YYY。我很乐意使用Seaborn's heatmap function创建一个日历热图,以显示日历年中日期的分布(无论年份如何)。我已经想出如何将Month和Day分成单独的列,以便我有:

In [8]: df.head()
Out[8]:
  original_date month day
0   05-Sep-2010   Sep  05
1   08-Apr-2010   Apr  08
2   03-Aug-2008   Aug  03
3   03-Feb-2008   Feb  03
4   14-Mar-2008   Mar  14

我可以对此数据框执行哪些操作,使其成为以月为单位的列格式,将行数作为行索引?这是我正在寻找的东西,但它是在没有Pandas的情况下完成的,使用了csv处理和嵌套字典。

       01    02   03   04    05   06   07    08   09    10  ... 
Jan  1923   371  341  451   437  332  338   398  403   476  ...   
Feb   931   675  891  514   479  452  509   657  507   771  ...  
Mar  1370   906  737  594   469  458  524   368  430  2136  ...  
Apr  1433  1127  706  791   639  817  584   580  515   757  ...   
May  1666   885  884  697  1626  708  809  1053  826  1281  ... 

我想在Pandas中这样做,以便能够按年等过滤。

1 个答案:

答案 0 :(得分:0)

首先,我会创建一个按月和日(不包括年份)计算的新数据框

new_df = []
for key, grp in df.groupby(['month', 'day']):

    month, day = key

    new_df.append({
        'month': month,
        'day': day,
        'count': len(grp)
    })
new_df = pd.DataFrame(new_df)

然后,您可以透视此数据框以提供所需的格式

new_df.pivot('month', 'day', 'count')