多くの場合、groupby().apply() を呼び出す必要があります。apply() のコールバック関数は Series または DataFrame (またはおそらくスカラー) のみを返すことが許可されているため、コールバック関数が 1 次元配列と 2 次元配列のタプルを返す必要がある場合はかなり扱いにくくなります。それらを DataFrame にパックし、apply() から結果を取得したら配列にアンパックします。
例:
def my_callback(g):
"""This function takes the group g and calculates a two dim array and a
one dim array"""
a = np.ones(len(g),2)
b = np.ones(len(g))
#I need to return a and b
return a, b #this won't work
x = data.groupby('key').apply(my_callback)
誰か提案はありますか?パンダがコールバックからのより柔軟な戻り値を許可すると、はるかに便利になります。
ケース 1: DataFrame を回帰の独立変数と従属変数に変換する必要があります。この変換では、グループごとに 2D 配列と 1D 配列を生成し、各グループの配列の行を積み重ねます。私だけが書くことができれば素晴らしいでしょう:
X, Y = data.groupby('key').apply(my_callback)
DataFrame を使用すると動作しますが、np.column_stack() が含まれます。
ケース 2: DataFrame をグループごとに異なる行と列の 2 つの配列に変換したいと考えています。すべてを 1D シリーズとしてエンコードしない限り、今日これを行う方法はないと思います。