gpt4 book ai didi

python - 如何从过滤后的 DataFrame 中只获取相关的索引值?

转载 作者:行者123 更新时间:2023-11-28 21:39:57 24 4
gpt4 key购买 nike

我有一个像这样的 DataFrame:

t = [v for v in zip(['Tan'] * 5 + ['Rad'] * 5, ['min', 'max', 'var', 'rf', 'uf'] * 2)]
df = pd.DataFrame([1.,2,3,4,5]*2, index=pd.MultiIndex.from_tuples(t), columns=['val'])

也就是

         val
Tan min 1.0
max 2.0
var 3.0
rf 4.0
uf 5.0
Rad min 1.0
max 2.0
var 3.0
rf 4.0
uf 5.0

当我用 df[df.val >= 3] 过滤这个对象时得到

         val
Tan var 3.0
rf 4.0
uf 5.0
Rad var 3.0
rf 4.0
uf 5.0

但是,如果我想像这样从索引级别 1 获取所有唯一值:

df[df.val >= 3].index.levels[1].unique()

结果会是

['max', 'min', 'rf', 'uf', 'var']

而不仅仅是 ['rf', 'uf', 'var'] 这是我期望看到的。

如何根据我用 df[df.val >= 3] 得到的过滤后的 DataFrame 只获取相关值?

最佳答案

你需要remove_unused_levels , 版本 0.20.0 中的新内容。:

df1 = df[df.val >= 3]

print (df1.index)
MultiIndex(levels=[['Rad', 'Tan'], ['max', 'min', 'rf', 'uf', 'var']],
labels=[[1, 1, 1, 0, 0, 0], [4, 2, 3, 4, 2, 3]])

df1.index = df1.index.remove_unused_levels()
print (df1.index)
MultiIndex(levels=[['Rad', 'Tan'], ['var', 'rf', 'uf']],
labels=[[1, 1, 1, 0, 0, 0], [0, 1, 2, 0, 1, 2]])


print (df1.index.levels[1])
Index(['var', 'rf', 'uf'], dtype='object')

关于python - 如何从过滤后的 DataFrame 中只获取相关的索引值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46213499/

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