データフレーム:
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) になります。transform
apply
mean