2017-02-21 50 views
0

我有創建時間戳的數據。和不同日期的可用性數據。我用分組的createdat數據:groupby month each axis

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

看來你需要的列名轉換爲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