2

これは、計算された列を既存のデータフレームにアタッチするのと似ていますが、pandas v0.14で複数の列でグループ化する場合、このソリューションは機能しません。

例えば:

$ df = pd.DataFrame([
    [1, 1, 1],
    [1, 2, 1],
    [1, 2, 2],
    [1, 3, 1],
    [2, 1, 1]],
    columns=['id', 'country', 'source'])

次の計算が機能します。

$ df.groupby(['id','country'])['source'].apply(lambda x: x.unique().tolist())


0       [1]
1    [1, 2]
2    [1, 2]
3       [1]
4       [1]
Name: source, dtype: object

ただし、出力を新しい列に割り当てると、エラーが発生します。

df['source_list'] = df.groupby(['id','country'])['source'].apply(
                               lambda x: x.unique().tolist())

TypeError: 挿入された列のインデックスがフレーム インデックスと互換性がありません

4

3 に答える 3