グループ化された Pandas データフレームをループする方法は? 質問する

グループ化された Pandas データフレームをループする方法は? 質問する

データフレーム:

  c_os_family_ss c_os_major_is l_customer_id_i
0      Windows 7                         90418
1      Windows 7                         90418
2      Windows 7                         90418

コード:

for name, group in df.groupby('l_customer_id_i').agg(lambda x: ','.join(x)):
    print name
    print group

集計されたデータをループしようとしていますが、エラーが発生します:

ValueError: too many values to unpack

すべてのグループをループしたいのですが、どうすればいいでしょうか?

ベストアンサー1

df.groupby('l_customer_id_i').agg(lambda x: ','.join(x))すでにデータフレームを返しているため、グループをループすることはできません。

一般的に:

  • df.groupby(...)オブジェクト(DataFrameGroupByまたはSeriesGroupBy)を返しGroupBy、これを使用してグループを反復処理できます(ドキュメントで説明されているようにここ)。次のようなことができます。

    grouped = df.groupby('A')
    
    for name, group in grouped:
        ...
    
  • この例では、groupby に関数を適用すると(ただし、、、... の場合もあります)、さまざまdf.groupby(...).agg(...)なグループに関数を適用した結果が1 つのデータフレームに結合します(groupby の「分割-適用-結合」パラダイムの適用および結合手順)。したがって、この結果は常に DataFrame (または適用された関数に応じて Series) になります。transformapplymean

おすすめ記事