2016-12-31 8 views
1

ヘッダーがdatetime形式の200列のデータフレームを持っていますデータフレーム列をどのように再サンプリングできますか?

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に関連する:

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)が7 <= i <= 206ならばx for i、x in enumerate(HousingAll.columns、1)] –

2

あなたの列はdatetime型ではありません。それらをdatetimeに変換してから再サンプリングする必要があります。

df.columns = pd.to_datetime(df.columns) 
関連する問題