Python Pandas – 返回多重索引中所要求层级的标签值向量
在 Pandas 中,多重索引是一种非常常见的数据结构。在处理多重索引时,有时我们需要快速获取某一层级的所有标签值向量。这篇文章将介绍如何使用 Pandas 来实现这个功能。
多重索引
在 Pandas 中,如果一个数据框中的某些列存在相同的标签值,那么我们就可以使用多重索引来对这些列进行标记。例如,在下面的数据框中,我们使用多重索引对“城市”和“人口”这两列进行了标记:
import pandas as pd
data = {
'城市': ['北京', '北京', '上海', '上海', '广州', '广州'],
'年份': ['2017', '2018', '2017', '2018', '2017', '2018'],
'人口': [2154, 2171, 2424, 2448, 1420, 1446],
'GDP': [28014, 30320, 30632, 35504, 19611, 21418]
}
df = pd.DataFrame(data)
df = df.set_index(['城市', '年份'])
运行上面的代码,我们就可以得到以下数据框:
人口 GDP
城市 年份
北京 2017 2154 28014
2018 2171 30320
上海 2017 2424 30632
2018 2448 35504
广州 2017 1420 19611
2018 1446 21418
可以看到,我们使用 set_index 函数将“城市”和“年份”这些列设置为了多重索引。
获取标签值向量
在上面的数据框中,我们已经将“城市”和“年份”这两列设置为了多重索引。现在,假设我们想要获取所有城市的标签值向量,我们可以使用 Pandas 中的 get_level_values() 函数来实现:
city = df.index.get_level_values(0).unique()
print(city)
运行上面的代码,我们就可以得到以下输出:
Index(['北京', '上海', '广州'], dtype='object', name='城市')
可以看到,我们成功地获取了城市的标签值向量。
类似地,如果我们想要获取所有年份的标签值向量,我们可以使用以下代码:
year = df.index.get_level_values(1).unique()
print(year)
输出如下:
Index(['2017', '2018'], dtype='object', name='年份')
结论
本文介绍了如何使用 Pandas 来获取多重索引中所要求层级的标签值向量。我们可以使用 get_level_values() 函数来获取某一层级的标签值向量,并使用 unique() 函数来去重。这种方法非常直观和简洁,可以用于大多数多重索引的应用场景。
极客笔记