我希望能够通过对多索引进行分组来遍历pandas DataFrame。在这里,我希望能够一起处理每个行业中的一组行。我加载了多索引。

from StringIO import StringIO
data = """industry,location,number
retail,brazil,294
technology,china,100
retail,nyc,2913
retail,paris,382
technology,us,2182
"""

df = pd.read_csv(StringIO(data), sep=",", index_col=['industry', 'location'])


所以我希望能有一些效果:

for industry, rows in df.iter_multiindex():
    for row in rows:
        process_row(row)


有这种方法吗?

最佳答案

您可以按多索引的第一级(行业)分组,然后遍历各组:

In [102]: for name, group in df.groupby(level='industry'):
   .....:     print name, '\n', group, '\n'
   .....:
retail
                   number
industry location
retail   brazil       294
         nyc         2913
         paris        382

technology
                     number
industry   location
technology china        100
           us          2182


group每次是一个数据框,然后您可以遍历该数据框(例如,使用for row in group.iterrows()

但是,在大多数情况下,不需要这种迭代! process_row意味着什么?可能您可以直接在groupby对象上以矢量化方式执行此操作。

关于python - 在python Pandas 中遍历MultiIndex数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27279879/

10-15 08:44