我得到了不一致的索引行为,这取决于我的多索引数据帧中的一个索引是整数还是字符串。举个例子:
a = [['a','a','a','b','b','b','c','c'],[2,1,1,1,2,2,2,1]]
b = [['a','b','c','a','b','c','a','b'],[2,2,2,2,4,4,4,4]]
index=pd.MultiIndex.from_tuples(list(zip(*b)),names=['num1','num2'])
df1=pd.DataFrame({'letters': a[0],'numbers': a[1]},index=index)
df1.sort_index(inplace=True) # avoid lex sort warnings
df1
letters numbers
num1 num2
a 2 a 2
2 b 1
4 c 2
b 2 a 1
4 b 2
4 c 1
c 2 a 1
4 b 2
df1.loc['a',2]['letters'][0]
'a'
df1.loc['a',2]['letters'][1]
'b'
a = [['a','a','a','b','b','b','c','c'],[2,1,1,1,2,2,2,1]]
b = [[1,2,3,1,2,3,1,2],[2,2,2,2,4,4,4,4]]
index=pd.MultiIndex.from_tuples(list(zip(*b)),names=['num1','num2'])
df1=pd.DataFrame({'letters': a[0],'numbers': a[1]},index=index)
df1.sort_index(inplace=True) # avoid lex sort warnings
df1
letters numbers
num1 num2
1 2 a 2
2 b 1
4 c 2
2 2 a 1
4 b 2
4 c 1
3 2 a 1
4 b 2
df1.loc[1,2]['letters'][0]
'a'
df1.loc[1,2]['letters'][1]
num2
2 a
2 b
Name: letters, dtype: object
第一种情况下的行为是我所期望的。有人能解释为什么在第二种情况下,用1
索引会返回一个序列而不是字符串'b'
如果使用^{} /^{} 作为“按位置选择”,则所有工作状态良好
对于
MultiIndexed DataFrame
的选择值,也可以使用tuple
相关问题 更多 >
编程相关推荐