gpt4 book ai didi

python - 如何从数据帧多索引的单个级别中选择多个值

转载 作者:行者123 更新时间:2023-12-04 02:23:29 26 4
gpt4 key购买 nike

如果我有以下几点:

df = pd.DataFrame(np.random.random((4,8)))
tupleList = zip([x for x in 'abcdefgh'], [y for y in ['iijjkkll'])
ind = pd.MultiIndex.from_tuples(tupleList)
df.columns = ind

In [71]: df
Out[71]:
a b c d e f g \
i i j j k k l
0 0.968112 0.809183 0.144320 0.518120 0.820079 0.648237 0.971552
1 0.959022 0.721705 0.139588 0.408940 0.230956 0.907192 0.467016
2 0.335085 0.537437 0.725119 0.486447 0.114048 0.150150 0.894322
3 0.051249 0.186547 0.779814 0.905914 0.024298 0.002489 0.339714

h
l
0 0.438330
1 0.225447
2 0.331413
3 0.530789

[4 rows x 8 columns]

选择具有“j”或“k”二级标签的列的最简单方法是什么?
          c         d         e         f
j j k k
0 0.948030 0.243993 0.627497 0.729024
1 0.087703 0.874968 0.581875 0.996466
2 0.802155 0.213450 0.375096 0.184569
3 0.164278 0.646088 0.201323 0.022498

我可以做这个:
df.loc[:, df.columns.get_level_values(1).isin(['j', 'k'])]

但是对于感觉应该很简单的东西来说,这似乎很冗长。有什么更好的方法吗?

最佳答案

有关使用切片器的多索引,请参阅 here,在 0.14.0 中引入

In [36]: idx = pd.IndexSlice

In [37]: df.loc[:, idx[:, ['j', 'k']]]
Out[37]:
c d e f
j j k k
0 0.750582 0.877763 0.262696 0.226005
1 0.025902 0.967179 0.125647 0.297304
2 0.463544 0.104973 0.154113 0.284820
3 0.631695 0.841023 0.820907 0.938378

关于python - 如何从数据帧多索引的单个级别中选择多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25292009/

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