gpt4 book ai didi

python - 为什么我不能过滤多索引数据框的第二个索引?

转载 作者:太空宇宙 更新时间:2023-11-03 15:34:53 24 4
gpt4 key购买 nike

我知道有人问过类似的问题,但我似乎找不到解决这个问题的方法。

使用以下代码,我可以使用列和第一个索引而不是第二个索引进行过滤。

import pandas as pd
import numpy as np
ix = pd.MultiIndex.from_product([ ['foo', 'bar'], ['baz',
'can']], names=['a', 'b'])
data = np.arange(len(ix))
df = pd.DataFrame(data, index=ix, columns=['values'])
df['values2']=[1,4,5,6]
print(df)

结果输出如下:

enter image description here

注意最后一行是如何不起作用的

df.loc['foo','can']['values2']   # works
df.loc['foo']['values2'] # works
df.loc['foo','can'][:] # works
df.loc['foo',:][:] # works
df.loc[:,'can'][:] # does not work.

最佳答案

使用slicers对于更复杂的选择:

idx = pd.IndexSlice

print (df.loc[idx['foo', 'can'], 'values'])
1

print (df.loc[idx['foo'], 'values'])
b
baz 0
can 1
Name: values, dtype: int32

print (df.loc[idx['foo',:], 'values'])
a b
foo baz 0
can 1
Name: values, dtype: int32

print (df.loc[idx['foo','can'], :])
values 1
values2 4
Name: (foo, can), dtype: int64

print (df.loc[idx['foo',:], :])
values values2
a b
foo baz 0 1
can 1 4

print (df.loc[idx[:, 'can'], :])
values values2
a b
foo can 1 4
bar can 3 6

关于python - 为什么我不能过滤多索引数据框的第二个索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55516214/

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