[英]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.