给定一个多索引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
答案 0 :(得分:0)
您的第一种方法可以正常使用:
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