我有一个熊猫
DataFrame
:
>>> f = pd.DataFrame.from_dict({"r0":{"c0":1,"c1":2},("r",1):{"c0":3,"c1":4}},orient="index")
c0 c1
r0 1 2
(r, 1) 3 4
我可以得到第一行:
>>> list(f.loc["r0"].items())
[('c0', 1), ('c1', 2)]
但不能得到第二行,因为
f.loc[("r",1)]
引发
KeyError
我想我可以
>>> list(f.loc[[("r",1)]].iloc[0].items())
[('c0', 3), ('c1', 4)]
但这是无法形容的丑陋。
正确的做法是什么?
可以使用元组作为索引来访问 DataFrame 中的行,方法是在
loc
属性中使用元组。
f.loc[("r", 1)]
这将返回索引为
("r", 1)
的行作为 Series。
为了获得与
list(f.loc["r0"].items())
相同的结果,可以将 Series 转换为列表:
list(f.loc[("r", 1)].items())
这将返回一个包含元组的列表,每个元组代表列名和相应的值:
[('c0', 3), ('c1', 4)]
遇到的
KeyError
可能是由于索引中元组的格式不正确造成的。确保元组的括号和逗号正确无误。