私は、2つのレベルの列インデックスを持つデータフレームを持っています。私は2つのキー(列)に異なる集約関数を持つ必要があります。しかし、自分のコードでエラーが発生しました。マルチレベルのデータフレームで複数の列に集計する方法複数レベルインデックス内の集計
dic1 = {('count', 'N.A.'): {Period('1993-01', 'M'): 0,
Period('1993-02', 'M'): 0,
Period('1993-03', 'M'): 0},
('count', 'No'): {Period('1993-01', 'M'): 1,
Period('1993-02', 'M'): 1,
Period('1993-03', 'M'): 1},
('count', 'Yes'): {Period('1993-01', 'M'): 0,
Period('1993-02', 'M'): 0,
Period('1993-03', 'M'): 0},
('sum', 'N.A.'): {Period('1993-01', 'M'): nan,
Period('1993-02', 'M'): nan,
Period('1993-03', 'M'): nan},
('sum', 'No'): {Period('1993-01', 'M'): 6.5820000000000007,
Period('1993-02', 'M'): 131.1865,
Period('1993-03', 'M'): 133.31049999999999},
('sum', 'Yes'): {Period('1993-01', 'M'): nan,
Period('1993-02', 'M'): nan,
Period('1993-03', 'M'): nan}}
df1 = pd.DataFrame(dic1)
df1.to_timestamp(how='end').groupby(pd.TimeGrouper('A')).agg(
{'count':['max', 'min', 'median', 'last'] ,
'sum':['mean', 'max' , 'last']})
error: KeyError: 'sum'
おかげ@感謝を! 'reset_index(-1)'はmake pandasが日付を繰り返すか、それとも他の機能を持っていますか? – Roo
['reset_index'](https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.reset_index.html)は、インデックスを移動します(または、マルチインデックスの場合、レベルMultiIndexの)をDataFrameの列に追加します。 'reset_index(-1)'は、MultiIndexの最後のレベルを列に移動します。この場合、 'YN'インデックスレベルを同じ名前の新しいカラムに移動します。 'reset_index(-1)'は、最後のレベルに名前がない場合に便利です。ここでは、 'reset_index( 'YN')'を使った方がいいでしょう。 – unutbu
[stack](https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.stack.html)は、列インデックス(または列MultiIndexのレベル)を行インデックスに移動します。一緒に、 'stack'の後に' reset_index'が続くと、カラムインデックスのレベルが新しいDataFrameカラムに移動します。 – unutbu