我的数据有一个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
所有列标签都是日期类型。
答案 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