【发布时间】:2016-07-15 03:43:33
【问题描述】:
您如何遍历从.groupby('...').size() 命令生成的 Pandas 系列并获取组名和计数。
例如,如果我有:
foo
-1 7
0 85
1 14
2 5
我如何循环它们,以便在每次迭代中我都会在变量中包含 -1 & 7、0 & 85、1 & 14 和 2 & 5?
我尝试了 enumerate 选项,但效果不佳。示例:
for i, row in enumerate(df.groupby(['foo']).size()):
print(i, row)
i 不返回 -1、0、1 和 2,而是返回 0、1、2、3。
【问题讨论】:
-
enumerate 只计算任何序列中的项目数,它对 Series 的内部索引一无所知,这就是为什么它只是 0、1、2、3 并且对于任何可迭代对象都相同
-
大多数使用 pandas 的数值运算都可以向量化——这意味着它们比传统迭代要快得多。 OTOH,某些操作(例如字符串和正则表达式)本质上很难矢量化。在这种情况下,了解 如何 循环数据非常重要。有关何时以及如何循环数据的更多信息,请阅读For loops with Pandas - When should I care?。