2列にグループ化されたパンダDataFrame
と、グループ化された各行の集合から値のタプルを計算するカスタム関数があります。 元のグループインデックスでインデックスされたデータフレームで結果を収集しようとしています。 apply()
を使用すると、正確なインデックスを持つSeries
が得られますが、値はタプルの形になります。各グループのラベルによってインデックスされた結果をデータフレームにするために、関数をどのように書く必要がありますか?集計された値をデータフレームとして返す
ここでは、チュートリアルのデータフレームに基づく例を示します。
df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar',
'foo', 'bar', 'foo', 'foo'],
'B' : ['one', 'one', 'two', 'three',
'two', 'two', 'one', 'three'],
'C' : 1,
'D' : range(0, 8) })
groups = df.groupby(("A", "B"))
def myfunc(grp):
return len(grp), sum(grp["D"])
result = groups.apply(myfunc)
print(type(result))
print(result)
出力:
<class 'pandas.core.series.Series'>
A B
bar one (1, 4)
three (1, 8)
two (1, 12)
foo one (2, 16)
three (1, 16)
two (2, 16)
Iは、例えば、結果はデータフレームになりたいです「size」と「sum」という名前の列があります。私の集計機能はどのように見えるのですか?また、結果の各行に対して個々のラベル(列A
とB
)にアクセスするために何をする必要がありますか?
戻って試してみてください! –