DataFrame:
c_os_family_ss c_os_major_is l_customer_id_i
0 Windows 7 90418
1 Windows 7 90418
2 Windows 7 90418
字符串
代码:
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
型
我希望循环访问每个组。如何操作?
4条答案
按热度按时间sqxo8psd1#
df.groupby('l_customer_id_i').agg(lambda x: ','.join(x))
已经返回了一个数组,所以你不能再循环这些组了。一般而言:
df.groupby(...)
返回一个GroupBy
对象(DataFrameGroupBy或SeriesGroupBy),通过这个,你可以遍历组(如这里的文档中所解释的)。你可以这样做:字符串
df.groupby(...).agg(...)
中,(但也可以是transform
、apply
、mean
、.),你合并将应用函数到不同组的结果合并到一个嵌套框架中(groupby的“split-apply-合并”范例的apply和合并步骤)。因此,此操作的结果将始终是DataFrame(或Series,具体取决于所应用的函数)。j8yoct9x2#
下面是一个迭代
pd.DataFrame
的例子,该pd.DataFrame
被列atable
分组。对于这个例子,在for
循环中生成了SQL数据库的“create”语句:字符串
cig3rfwq3#
如果已经创建了索引框架,则可以覆盖索引值。
字符串
mfuanj7w4#
遍历groupby对象
当你通过DataFrame/Series分组时,你创建了一个
pandas.core.groupby.generic.DataFrameGroupBy
对象,它定义了__iter__()
方法,所以可以像定义这个方法的任何其他对象一样迭代。它可以被转换成列表/元组/迭代器等。在每次迭代中,它返回一个元组,其第一个元素是分组器键,第二个元素是分组创建的一个数组;你可以把它想象成在dict_items
上的迭代,在每次迭代中,项目都是键值元组。除非你在groupby对象上选择一个或多个列,否则它会返回所有的列。下面的代码的输出说明了这一点。字符串
x1c 0d1x的数据
在groupby对象上循环的一个非常有用的用例是将一个框架分割成单独的文件。例如,下面的代码从一个框架创建了两个csv文件(g_0.csv和g_1.csv)。
型
循环遍历分组的嵌套框架
如上所述,groupby对象通过一个键将一个嵌套框分割成多个嵌套框。因此,您可以像对任何其他嵌套框一样对每个分组的嵌套框进行循环。有关对嵌套框进行循环的全面方法,请参阅this answer。最高效的方法可能是
itertuples()
。下面是一个使用分组的嵌套框上的循环创建嵌套字典的示例:型