gpt4 book ai didi

python - 多索引索引中的行为不一致

转载 作者:行者123 更新时间:2023-12-01 09:09:38 28 4
gpt4 key购买 nike

根据 MultiIndex 数据帧中的索引之一是整数还是字符串,我得到的索引行为不一致。这是一个例子:

具有一个字符串索引的 MultiIndex:

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'

具有所有整数索引的 MultiIndex:

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' 吗?

最佳答案

如果使用iat/iloc按位置选择一切都很好。

对于MultiIndexed DataFrame的选择值也可以使用tuple

a = df1.loc[('a',2), 'letters'].iat[0]
print (a)
a

b = df1.loc[('a',2), 'letters'].iat[1]
print (b)
b
<小时/>
a = df1.loc[(1,2), 'letters'].iat[0]
print (a)
a

b = df1.loc[(1,2), 'letters'].iat[1]
print (b)
b

关于python - 多索引索引中的行为不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51767835/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com