如何在数据帧上循环?

数据帧:

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(…)(但这也可以是transformapplymean,…),您可以在一个数据帧中将应用该函数到不同组的结果组合在一起(groupby“split apply combine”范例中的应用和合并步骤)。因此,其结果将始终是一个数据帧(或一个系列,取决于应用的函数)

发表评论