小编典典

如何遍历分组的pandas数据框?

python

数据框:

  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           ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,...

输出不是问题,我希望遍历每个组。


阅读 201

收藏
2021-01-20

共1个答案

小编典典

df.groupby('l_customer_id_i').agg(lambda x: ','.join(x))
确实已经返回了数据帧,因此您无法再遍历这些组。

一般来说:

  • df.groupby(...)返回一个GroupBy对象(DataFrameGroupBy或SeriesGroupBy),以及与此,您可以迭代通过组(如文档解释这里)。您可以执行以下操作:

    grouped = df.groupby('A')
    

    for name, group in grouped:

  • 当您应用在GROUPBY,在你的榜样的功能df.groupby(...).agg(...)(但是这也可以是transformapplymean,…),你 结合 的结果 应用 的功能,不同的群体集中在一个数据框(在适用和结合的步骤groupby的“ split-apply-combine”范式。因此,其结果将始终是DataFrame(或Series,具体取决于所应用的功能)。

2021-01-20