2016-12-31 116 views
1

我有一個200列的數據框,其標題格式爲datetime如何重新採樣數據幀列?

2001-01-01 | 2001-02-01 | 2001-03-01 |等

我想重新取樣列,所以我得到的季度手段

2001q01欄| 2001q02 |等

這裏是我的重採樣線:

df.resample('Q', axis=1) 

不幸的是,我得到一個錯誤,因爲我的數據幀作爲一個整數索引列,並按照我的理解,重採樣正試圖以索引執行過。

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

我可以有一個沒有索引的數據框嗎?如果是這樣,我該如何創建一個沒有索引的數據框?如果沒有,有沒有辦法在我的數據列上調用resample?

回答

2

由於錯誤說,你的列索引不DatetimeIndex,你需要將它們轉換爲DatetimeIndex首先:

df.columns = pd.to_datetime(df.columns) 

要展開評論,如果您的數據幀由7至206列與日期時間有關:

datetime_df = df.iloc[:, 7:207] 
datetime_df.columns = pd.to_datetime(datetime_df.columns) 
pd.concat([df.iloc[:,:7], datetime_df.resample("Q", axis=1).mean(), df.iloc[:,208:]], axis = 1) 
+0

我確實使用過to_datetime。以下是我的實際代碼: –

+0

我看不到您的代碼。你的'df.columns'看起來如何?它是多指標? – Psidom

+0

HousingAll.columns = [pd.to_datetime(x)if 7 <= i <= 206 else x for i,x in enumerate(HousingAll.columns,1)] –

2

您的列不是日期時間類型。您需要將它們轉換爲日期時間然後重新採樣。

df.columns = pd.to_datetime(df.columns)