【问题标题】:Accessing row of multi-index DataFrame访问多索引DataFrame的行
【发布时间】:2016-03-31 09:14:20
【问题描述】:

给定一个多索引 DataFrame:

df = pd.DataFrame({'Last Name' :  ['Deere','Deere','Foo'   ,'Foo'  ,'Man'   ],
                   'Middle Name': ['Goat' ,'Lamb' ,'Man'   ,'Man'  ,'Date'  ],
                   'First Name':  ['John' ,'Jane' ,'Group' ,'Alone','Karate'],
                   'Value1':      [ 1     , 2     , 3      , 4     , 5      ],
                   'Value2':      ['Green','Blue' ,'Yellow','Black','Purple']})

df.set_index(['Last Name','Middle Name','First Name'],inplace=True)

看起来像:

                                       Value1     Value2
Last Name   Middle Name   First Name
Deere       Goat          John         1          Green
            Lamb          Jane         2          Blue
Foo         Man           Group        3          Yellow
                          Alone        4          Black
Man         Date          Karate       5          Purple

我想访问特定的行,使用类似于以下内容的内容:

df.loc['Foo','Man','Alone']

并让该命令返回一个类似于以下内容的系列:

Value1        4
Value2    Black
name: ('Last Name','Middle Name','First Name'), dtype: object

【问题讨论】:

    标签: python pandas multi-index


    【解决方案1】:

    您的第一种方法效果很好:

    s =  df.loc['Foo', 'Man', 'Alone']
    >>> s
    Value1        4
    Value2    Black
    Name: (Foo, Man, Alone), dtype: object
    

    唯一的区别是您似乎想重命名该系列。

    s.name = tuple(df.index.names)
    
    >>> s
    Value1        4
    Value2    Black
    Name: (Last Name, Middle Name, First Name), dtype: object
    

    请注意,如果您使用双括号,它将返回一个数据框而不是一个系列。

    >>> df.loc[[('Foo', 'Man', 'Alone')]]
                                      Value1 Value2
    Last Name Middle Name First Name               
    Foo       Man         Alone            4  Black
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-13
      • 2012-10-02
      • 2014-03-30
      • 2018-07-15
      相关资源
      最近更新 更多