我感觉这里有一些奇怪的 pandas
行为。我有一个类似这样的数据框:
df = pd.DataFrame(columns=['Col 1', 'Col 2', 'Col 3'],
index=[('1', 'a'), ('2', 'a'), ('1', 'b'), ('2', 'b')])
In [14]: df
Out[14]:
Col 1 Col 2 Col 3
(1, a) NaN NaN NaN
(2, a) NaN NaN NaN
(1, b) NaN NaN NaN
(2, b) NaN NaN NaN
我可以设置任意元素的值
In [15]: df['Col 2'].loc[('1', 'b')] = 6
In [16]: df
Out[16]:
Col 1 Col 2 Col 3
(1, a) NaN NaN NaN
(2, a) NaN NaN NaN
(1, b) NaN 6 NaN
(2, b) NaN NaN NaN
但是当我用相同的语法引用刚设置的元素时,我得到了
In [17]: df['Col 2'].loc[('1', 'b')]
KeyError: 'the label [1] is not in the [index]'
有人能告诉我我做错了什么或者为什么会出现这种行为吗?我不能把索引设置为多元素元组吗?
编辑
显然,用列表包装元组索引可以解决问题。
In [38]: df['Col 2'].loc[[('1', 'b')]]
Out[38]:
(1, b) 6
Name: Col 2, dtype: object
虽然在实际使用中 我仍然遇到一些奇怪的行为,所以知道这不是推荐用法会很好。