【问题标题】:pandas Panel 'iterrows' (iterate through major axis)pandas Panel 'iterrows'(遍历主轴)
【发布时间】:2016-11-20 06:22:12
【问题描述】:

我有一个看起来像这样的pandas 面板:

import pandas as pd
import numpy as np
P = pd.Panel(np.arange(90).reshape(5,6,3))

我想沿长轴创建一个生成器,类似于pd.DataFrame.iterrows,以便在每次调用时,next 返回一个包含当前长轴索引和形状为(P.shape[0], P.shape[2])pd.DataFrame 的元组。 pandas 中是否已经提供此功能?如果没有,有没有办法使用pd.DataFrame.iterrowsnumpy 迭代器来有效地复制此功能?

谢谢。

【问题讨论】:

    标签: python pandas iterator


    【解决方案1】:

    我会这样做:

    for m, df in P.to_frame().unstack().iterrows():
        print m
        print df.unstack()
    

    更好:

    for i, item in P.swapaxes(0, 1).iteritems():
        print i
        print item
    

    解决方案

    P.swapaxes(0, 1).iteritems()
    

    【讨论】:

      【解决方案2】:

      这就是你想要的吗?

      In [176]: [i for i in P.iteritems()]
      Out[176]:
      [(0,     0   1   2
        0   0   1   2
        1   3   4   5
        2   6   7   8
        3   9  10  11
        4  12  13  14
        5  15  16  17), (1,     0   1   2
        0  18  19  20
        1  21  22  23
        2  24  25  26
        3  27  28  29
        4  30  31  32
        5  33  34  35), (2,     0   1   2
        0  36  37  38
        1  39  40  41
        2  42  43  44
        3  45  46  47
        4  48  49  50
        5  51  52  53), (3,     0   1   2
        0  54  55  56
        1  57  58  59
        2  60  61  62
        3  63  64  65
        4  66  67  68
        5  69  70  71), (4,     0   1   2
        0  72  73  74
        1  75  76  77
        2  78  79  80
        3  81  82  83
        4  84  85  86
        5  87  88  89)]
      

      或:

      In [174]: [print(i[1]) for i in P.iteritems()]
          0   1   2
      0   0   1   2
      1   3   4   5
      2   6   7   8
      3   9  10  11
      4  12  13  14
      5  15  16  17
          0   1   2
      0  18  19  20
      1  21  22  23
      2  24  25  26
      3  27  28  29
      4  30  31  32
      5  33  34  35
          0   1   2
      0  36  37  38
      1  39  40  41
      2  42  43  44
      3  45  46  47
      4  48  49  50
      5  51  52  53
          0   1   2
      0  54  55  56
      1  57  58  59
      2  60  61  62
      3  63  64  65
      4  66  67  68
      5  69  70  71
          0   1   2
      0  72  73  74
      1  75  76  77
      2  78  79  80
      3  81  82  83
      4  84  85  86
      5  87  88  89
      Out[174]: [None, None, None, None, None]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-11-04
        • 2022-11-20
        • 2019-03-28
        • 2016-12-08
        • 2018-10-20
        • 2019-10-26
        • 2019-04-14
        相关资源
        最近更新 更多