groupby month两个轴

时间:2017-02-21 18:14:58

标签: python pandas

我的数据有一个createdat时间戳。和不同日期的可用性数据。我使用以下方法对createdat数据进行分组:

monthly_availability = summed_availability.groupby(pd.TimeGrouper(freq='M')).sum()


       2015-08-18  2015-08-19  2015-09-09  2015-09-10  2015-09-11  \
createdat                                                                
2015-08-31         1.0         1.0         4.0         6.0         7.0   
2015-09-30         NaN         NaN         2.0         2.0         2.0   
2015-10-31         NaN         NaN         NaN         NaN         NaN   
2015-11-30         NaN         NaN         NaN         NaN         NaN   
2015-12-31         NaN         NaN         NaN         NaN         NaN   

现在我想对行

做同样的事情

当我尝试使用以下代码对轴1进行分组时:

monthly_availability.groupby(pd.TimeGrouper(freq='M', axis=1), axis=1)

我收到以下错误:

TypeError Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of 'Index' 

Dateframe.info()给出了

<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 19 entries, 2015-08-31 to 2017-02-28
Freq: M
Columns: 767 entries, 2015-08-18 00:00:00 to 2017-09-12 00:00:00
dtypes: float64(767)
memory usage: 114.0 KB

所有列标签都是日期类型。

1 个答案:

答案 0 :(得分:1)

您似乎需要首先将列名称转换为datetime

monthly_availability.columns = pd.to_datetime(monthly_availability.columns)
df = monthly_availability.groupby(pd.TimeGrouper(freq='M'), axis=1).sum()
print (df)
createdat   2015-08-31  2015-09-30  2015-10-31  2015-11-30  2015-12-31
createdat                                                             
2015-08-31         1.0         1.0         4.0         6.0         7.0
2015-09-30         NaN         NaN         2.0         2.0         2.0
2015-10-31         NaN         NaN         NaN         NaN         NaN
2015-11-30         NaN         NaN         NaN         NaN         NaN
2015-12-31         NaN         NaN         NaN         NaN         NaN

也可以使用Grouper

df = monthly_availability.groupby(pd.Grouper(freq='M'), axis=1).sum()
print (df)
createdat   2015-08-31  2015-09-30  2015-10-31  2015-11-30  2015-12-31
createdat                                                             
2015-08-31         1.0         1.0         4.0         6.0         7.0
2015-09-30         NaN         NaN         2.0         2.0         2.0
2015-10-31         NaN         NaN         NaN         NaN         NaN
2015-11-30         NaN         NaN         NaN         NaN         NaN
2015-12-31         NaN         NaN         NaN         NaN         NaN