python - 如何循环分组的 Pandas 数据框?

标签 python pandas dataframe iteration pandas-groupby

数据帧:

  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/

相关文章:

Python如何在使用one-hot-encode/pd.get_dummies后反转实际值

r - 不使用 "for"两个数据帧之间的多重比较

python - Ctypes:将字符串从 C(++) 传输到 Python

python - 动态更新依赖于同一对象其他属性状态的对象属性

pandas: df.loc[-1,col] 有时工作,有时用 NAN 添加额外的行

python - 通过邮件发送创建的绘图

Scala - 当文件路径不存在时读取 DataFrame

r - 在 R 中,如何将数据框中的许多选择(二进制)列更改为因子?

python - 如何确定创建闭包的函数?

python - Python 中遗传算法的哪些数据类型?