数据帧:
c_os_家族c_os_专业是l_客户id_i
0 Windows 7 90418
1 Windows 7 90418
2 Windows 7 90418
代码:
打印df
对于名称,df.groupby(’l_customer_id_i’).agg(lambda x:’,’.join(x))中的组:
印刷品名称
打印组
我试图循环聚合数据,但我得到了错误:
ValueError:要解压缩的值太多
@EdChum,以下是预期输出:
c_os_系列\
l_客户_id_i
131572 Windows 7,Windows 7,Windows 7,Windows 7,Windows 7,Windows。。。
135467 Windows 7,Windows 7,Windows 7,Windows 7,Windows 7,Windows。。。
c_os__major_是
l_客户_id_i
131572 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,...
135467 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,...
输出不是问题,我希望对每个组进行循环
df.groupby('l_customer_id_i').agg(lambda x:','.join(x))已经返回了一个数据帧,因此您不能再在组上循环
一般而言:
-
df.groupby(…)返回一个groupby对象(DataFrameGroupBy或SeriesGroupBy),通过它,您可以遍历组(如本文文档中所述)。您可以执行以下操作:grouped=df.groupby('A')) 对于名称,分组为: ... -
当您在groupby上应用函数时,在您的示例中,
df.groupby(…).agg(…)(但这也可以是transform,apply,mean,…),您可以在一个数据帧中将应用该函数到不同组的结果组合在一起(groupby“split apply combine”范例中的应用和合并步骤)。因此,其结果将始终是一个数据帧(或一个系列,取决于应用的函数)