数据框:
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:要解压的值太多
@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 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,...
输出不是问题,我希望遍历每个组。
原文由 Tjorriemorrie 发布,翻译遵循 CC BY-SA 4.0 许可协议
df.groupby('l_customer_id_i').agg(lambda x: ','.join(x))
确实已经返回了一个数据帧,所以你不能再遍历组了。一般来说:
df.groupby(...)
返回一个GroupBy
对象(DataFrameGroupBy 或 SeriesGroupBy),这样,您就可以遍历这些组(如此 处 的文档中所述)。你可以这样做:df.groupby(...).agg(...)
(but this can also betransform
,apply
,mean
, . ..),您 将 函数 应用于 不同组的结果组合在一个数据框中(groupby 的“拆分-应用-组合”范例的应用和组合步骤)。因此,其结果将始终是一个 DataFrame(或一个 Series,具体取决于所应用的函数)。