数据帧:
c_os_family_ss c_os_major_is l_customer_id_i
0 Windows 7 90418
1 Windows 7 90418
2 Windows 7 90418
代码:
print df
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
@EdChum,这是预期的输出:
c_os_family_ss \
l_customer_id_i
131572 Windows 7,Windows 7,Windows 7,Windows 7,Window...
135467 Windows 7,Windows 7,Windows 7,Windows 7,Window...
c_os_major_is
l_customer_id_i
131572 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,...
135467 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,...
输出不是问题,我希望循环遍历每个组。
最佳答案
df.groupby('l_customer_id_i').agg(lambda x: ','.join(x))
确实已经返回了一个数据框,因此您不能再循环遍历这些组了。
一般:
df.groupby(...)
返回一个GroupBy
对象(DataFrameGroupBy 或 SeriesGroupBy),通过这个,您可以遍历组(如文档 here 中所述)。您可以执行以下操作:grouped = df.groupby('A') for name, group in grouped: ...
当您在 groupby 上应用函数时,在您的示例中
df.groupby(...).agg(...)
(但这也可以是transform
,apply
,mean
, ...),你组合应用函数的结果将不同的组放在一个数据框中(groupby 的“split-apply-combine”范式的应用和组合步骤)。因此,其结果将始终是 DataFrame(或 Series,具体取决于应用的功能)。
关于python - 如何循环分组的 Pandas 数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27405483/