Python Pandas to_frame() 将 Series 转换为 DataFrame 后出现 KeyError

Python Pandas to_frame() KeyError after converting Series to DataFrame

当我在从系列转换后尝试访问多索引数据帧时,出现 KeyError。

xs 有效,loc 无效。 我究竟做错了什么? 谢谢

from pandas import Series, MultiIndex

s=Series([1,2,3,4], name = 'val')

s.index = MultiIndex.from_product([['a','b'],['1','2']], names = ['x','y'])

print((s.index == s.to_frame().index).all())

print (s.loc[(slice(None), '1')])
print (s.xs('1', level=1))

print (s.to_frame().loc[(slice(None), '1')])
print (s.to_frame().xs('1', level=1))

它将以这种方式工作:

print (s.to_frame().loc[(slice(None), '1'),'val'])

原因是对于 Series,您不需要指定列标签,而在 pandas DataFrame 中,这是 loc 属性所必需的。