在 Pandas 中使用多索引标题读取 excel 时选择列
Posted
技术标签:
【中文标题】在 Pandas 中使用多索引标题读取 excel 时选择列【英文标题】:Select columns when reading excel with multiindex header in Pandas 【发布时间】:2020-01-29 17:12:54 【问题描述】:我有一个看起来像这样的 excel 表,我想将其作为多索引 Pandas 数据框阅读:
想要的结果:
M1 M2
site conc LQ conc LQ
C1 A 1 0.5 10 0.5
B 2 0.6 5 0.6
C <LQ 1.0 14 1.0
C2 A <LQ 1.1 12 1.1
C 3 0.5 14 0.5
D 1 0.5 11 0.5
以下代码用于产生所需的结果:
df = pd.read_excel("test.xlsx",
sheet_name="test",
header=[1,2],
index_col=[0,1],
usecols='A:B,D:G',
parse_dates = False,
)
但现在(pandas 版本 0.25.1)它会产生以下错误:
ValueError: cannot specify usecols when specifying a multi-index header
有什么简单的解决办法吗?
重现excel表格:
;;start;M1;;M2;;end;M1;;M2;
cam;site;bla;conc;LQ;conc;LQ;bla;conc;LQ;conc;LQ
C1;A;bla;1;0.5;10;0.5;bla;1;0.5;10;0.5
C1;B;bla;2;0.6;5;0.6;bla;2;0.6;5;0.6
C1;C;bla;<LQ;1;14;1;bla;<LQ;1;14;1
C2;A;bla;<LQ;1.1;12;1.1;bla;<LQ;1.1;12;1.1
C2;C;bla;3;0.5;14;0.5;bla;3;0.5;14;0.5
C2;D;bla;1;0.5;11;0.5;bla;1;0.5;11;0.5
【问题讨论】:
您是否尝试从参数列表中删除usecols
?
我放大了我的 MWE 来说明对“usecols”的需求
【参考方案1】:
您好,我遇到了同样的问题,当headers
是多重索引时,您不能使用usecols
我通过这样做解决了这个问题:
df = pd.read_excel("test.xlsx",
sheet_name="test",
header=2,
index_col=[0,1],
usecols='A:B,D:G',
parse_dates=False)
index = pd.read_excel("test.xlsx",
sheet_name="test",
header=None,
skiprows=1,
index_col=[0,1],
nrows=2,
usecols='A:B,D:G',
parse_dates=False)
index = index.fillna(method='ffill', axis=1)
df.columns = pd.MultiIndex.from_arrays(index.values)
df
【讨论】:
以上是关于在 Pandas 中使用多索引标题读取 excel 时选择列的主要内容,如果未能解决你的问题,请参考以下文章
使用 Python/Pandas 将多索引数据写入 excel 文件