1 つの列に numpy 配列が含まれている pandas DataFrame を使用しています。集計によってその列を合計しようとすると、「集計値を生成する必要があります」というエラーが表示されます。
例えば
import pandas as pd
import numpy as np
DF = pd.DataFrame([[1,np.array([10,20,30])],
[1,np.array([40,50,60])],
[2,np.array([20,30,40])],], columns=['category','arraydata'])
これは私が期待するように動作します:
DF.groupby('category').agg(sum)
出力:
arraydata
category 1 [50 70 90]
2 [20 30 40]
ただし、実際のデータ フレームには複数の数値列があるため、arraydata は集計対象の既定の列として選択されておらず、手動で選択する必要があります。これが私が試した1つのアプローチです:
g=DF.groupby('category')
g.agg({'arraydata':sum})
ここに別のものがあります:
g=DF.groupby('category')
g['arraydata'].agg(sum)
どちらも同じ出力が得られます。
Exception: must produce aggregated value
ただし、配列データではなく数値を使用する列がある場合は、正常に機能します。これを回避することはできますが、紛らわしく、これがバグなのか、それとも何か間違っているのか疑問に思っています。ここで配列を使用するのはちょっと特殊なケースかもしれませんし、実際にそれらがサポートされているかどうかはわかりませんでした。アイデア?
ありがとう