Pandas多级列索引DataFrame如何选取不同顶层索引下的指定多列
问题原因
你读取到的表格采用多级表头(MultiIndex)结构,ResidualMaturity为无下级子列的一级表头,Last为一级表头Yield下的二级子列,选取多列时需要将每个目标列的完整索引元组放入同一个列表传入。
解决代码
import pandas as pd import requests url = 'http://www.worldgovernmentbonds.com/country/japan/' r = requests.get(url) df_list = pd.read_html(r.text, flavor='html5lib') df = df_list[4] # 按多级索引元组筛选目标列 yc = df[[('ResidualMaturity', ''), ('Yield', 'Last')]] # 可选:将多级列名展平为单级,方便导出和后续处理 yc.columns = ['ResidualMaturity', 'Yield_Last'] print(yc) # 导出为csv直接执行:yc.to_csv('japan_bond_yield.csv', index=False)
注意事项
- 如果运行提示列不存在,可先执行
print(df.columns.tolist())打印所有列的完整索引结构,根据实际返回的元组内容替换筛选列表中的对应值即可,部分场景下无下级子列的列二级索引会和一级索引同名,调整为('ResidualMaturity', 'ResidualMaturity')即可。 - 展平列名后导出的csv不会出现多级表头冗余行,更适合后续数据处理。
内容的提问来源于stack exchange,提问作者Terence Chew
相关产品推荐
相关产品推荐

