【问题标题】:Retrieving index from multi-index based on column values in Pandas根据 Pandas 中的列值从多索引中检索索引
【发布时间】:2017-06-07 03:04:09
【问题描述】:

假设我有一张这样的桌子:

  Attr   |  Foo    |  Bar     
Name|Val | 1  | 2  | 3  | 4
-----------------------------
OFO |1   | F  | T  | F  | F
    |2   | T  | F  | F  | T 
-----------------------------
ARB |5   | T  | T  | F  | F
    |6   | F  | F  | F  | T

我的行由级别 0 = {OFO, ARB} 和级别 1 = {1,2,5,6} 的索引控制,列是级别 0 = {Foo,Bar} 和级别 1 = {1 ,2,3,4} 我希望能够从每个 T 条目中提取相应的行和列索引,所以一个返回是:

((Foo,1),(OFO,1))

我正在努力想出一个好的解决方案。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    你可以从:

    df.stack([0,1]).reset_index(name='value').query('value == True')
    

    输出:

       level_0  level_1 level_2  level_3 value
    3      OFO        1     Foo        2  True
    5      OFO        2     Bar        4  True
    6      OFO        2     Foo        1  True
    10     ARB        5     Foo        1  True
    11     ARB        5     Foo        2  True
    13     ARB        6     Bar        4  True
    

    【讨论】:

      【解决方案2】:

      这是我的解决方案:

      def getIndex(table):
          mask = (pd.notnull(table))
          i, j = np.where(mask)
          return list(zip(table.index[i],table.columns[j]))
      

      在这个问题的显着帮助下: Get the row and column labels for selected values in a Pandas dataframe

      【讨论】:

        猜你喜欢
        • 2020-03-05
        • 2016-09-02
        • 2017-08-27
        • 2017-08-21
        • 2020-04-13
        • 2022-06-29
        • 2016-02-11
        • 2021-10-11
        • 2016-10-06
        相关资源
        最近更新 更多