数据帧:
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 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,...
输出不是问题,我希望循环遍历每个组。
如果已经创建了数据帧,则可以迭代索引值。
下面是对按列
atable
分组的pd.DataFrame
进行迭代的示例。对于一个示例用例,SQL数据库的“create”语句是在for
循环中生成的:df.groupby('l_customer_id_i').agg(lambda x: ','.join(x))
已经返回了一个数据帧,因此您不能再在组上循环。一般而言:
df.groupby(...)
返回一个GroupBy
对象(一个DataFrameGroupBy或SeriesGroupBy),使用它,您可以遍历这些组(如文档here中所述)。你可以这样做:当您在groupby上应用函数时,在您的示例
df.groupby(...).agg(...)
(但也可以是transform
、apply
、mean
,…)中,您将该函数在一个数据帧中一起应用到不同组的结果(groupby的“split-apply-combine”范式的“apply”和“combine”步骤)。因此,结果将始终是一个数据帧(或一个序列,取决于应用的函数)。相关问题 更多 >
编程相关推荐