2017-06-05 5 views
-1

以下のコード行は、各月の総売上を表す列を使用し、売上を四半期ごとに平均します。format関数を使用した列の名前付け

mdf = tdf[sel_cols].resample('3M',axis=1).mean() 

私がする必要があるのは、strを持つ列のタイトルです(pandas .Period関数は使用できません)。

次のコードを使用しようとしましたが、動作させることができません。

mdf = tdf[sel_cols].resample('3M',axis=1).mean().rename(columns=lambda x: '{:}q{:}'.format(x.year, [1, 2, 3, 4][x.quarter==1])) 

私は列が...など2000q1、2000q2、2000q3、2000q4、2001q1を、...読んで、しかし2000q1、2000q1、2000q1、2000q2、2001q1のような間違ったものを取得しておきたいです。

.format関数を使用して正しく機能させるにはどうすればよいですか。

+2

のような日時リストに四半期機能を実行することである[x.quarter == 1]'これはしか '返します。 「1」または「2」である。 'x.quarter == 1'は常に' True'か 'False'のどちらかと評価され、それぞれリストのインデックス' 1'または '0'に変換されます。 – 0x5453

+0

@ 0x5453 ok、それは理にかなっています。列がなくなるまで1から4までカウントする必要はありますか? –

+0

'x.quarter'にはどのような値が入っていますか?既に1-4の範囲でフォーマットされている場合は、単に 'x.quarter'を使うことができます。それが増えれば、おそらく '[1、2、3、4] [x.quarter%4]'を実行できます。サンプルデータを見ずに言うのは難しいです。 – 0x5453

答えて

0

最も簡単な方法は、[1、2、3、4] `そう

mdf = tdf[sel_cols].resample('3M',axis=1).mean().rename(columns=lambda x: '{:}q{:}'.format(x.year,x.quarter)) 
関連する問題