繁体   English   中英

Pandas,按月排序,每年新建一列

[英]Pandas, sort by month and create new column for each year

我有一个 dataframe,看起来像这样:

        date         data 
        2013-09-03     10
        2013-09-04     9
        2013-10-03     14
        2014-09-02     13
        2015-08-07     12
        2016-09-02     17

然后我仅在第 9 个月将下面的代码应用于 select

import pandas as pd
import datetime as dt

df= df[df['Date'].dt.month == 9]  # select only the 9th month

这让我得到以下信息:

        date         data 
        2013-09-03     10
        2013-09-04     9
        2014-09-02     13
        2016-09-02     17

但我要创建的是每次选择第 9 个月时的一列,以便它可以成为一个单独的列

        date         data  2013  2014 2016
        2013-09-03     10   10
        2013-09-04     9     9
        2014-09-07     13         13
        2016-09-08     17               17

我想我必须在 for 循环中使用 dt.year function 来为每年创建一个列,但我认为 pandas 中可能有更简单的解决方案?

你可以试试crosstab

s = pd.crosstab(index=df.index,columns=df.date.dt.year,values=df.data,aggfunc='sum').fillna('')
df = df.join(s)
df
Out[45]: 
        date  data 2013 2014 2016
0 2013-09-03    10   10          
1 2013-09-04     9    9          
2 2014-09-02    13        13     
3 2016-09-02    17             17

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM