获取多索引列值
Get a multiple-index column values
假设我们有一个 DataFrame df 和 N 行:
| multiple-index | | ordinary columns |
I_A, I_B, I_C, I_D, C_A, C_B, C_C, C_D
我们如何提取 I_B 索引列的所有 N 值? df.index 为我们提供了 I_A...I_D 的所有组合,但这不是我们需要的.当然,我们可以迭代它,但它会降低生产力,是否有更简单、更直接的方法?
感谢您的宝贵时间。
更新
例如,我们有 df 生成者:
data = {
"animal": ["cat", "dog", "parrot", "hamster"],
"size": ["big", "big", "small", "small"],
"feet": [4, 4, 2, 4]
}
multi = pd.DataFrame(data)
multi.set_index(["size", "feet"], inplace = True)
这是:
animal
size feet |
big 4 | cat
big 4 | dog
small 2 | parrot
small 4 | hamster
其索引为:
MultiIndex([( 'big', 4),
( 'big', 4),
('small', 2),
('small', 4)],
names=['size', 'feet'])
我们希望从中获得所有尺寸:
['big', 'big', 'small', 'small']
我们该怎么做?
我想你在找 MultiIndex.get_level_values
:
multi.index.get_level_values('size')
输出:Index(['big', 'big', 'small', 'small'], dtype='object', name='size')
或如列表:
multi.index.get_level_values('size').to_list()
输出:['big', 'big', 'small', 'small']
假设我们有一个 DataFrame df 和 N 行:
| multiple-index | | ordinary columns |
I_A, I_B, I_C, I_D, C_A, C_B, C_C, C_D
我们如何提取 I_B 索引列的所有 N 值? df.index 为我们提供了 I_A...I_D 的所有组合,但这不是我们需要的.当然,我们可以迭代它,但它会降低生产力,是否有更简单、更直接的方法?
感谢您的宝贵时间。
更新
例如,我们有 df 生成者:
data = {
"animal": ["cat", "dog", "parrot", "hamster"],
"size": ["big", "big", "small", "small"],
"feet": [4, 4, 2, 4]
}
multi = pd.DataFrame(data)
multi.set_index(["size", "feet"], inplace = True)
这是:
animal
size feet |
big 4 | cat
big 4 | dog
small 2 | parrot
small 4 | hamster
其索引为:
MultiIndex([( 'big', 4),
( 'big', 4),
('small', 2),
('small', 4)],
names=['size', 'feet'])
我们希望从中获得所有尺寸:
['big', 'big', 'small', 'small']
我们该怎么做?
我想你在找 MultiIndex.get_level_values
:
multi.index.get_level_values('size')
输出:Index(['big', 'big', 'small', 'small'], dtype='object', name='size')
或如列表:
multi.index.get_level_values('size').to_list()
输出:['big', 'big', 'small', 'small']