[英]Collapse specific multiindex columns pandas dataframe
我正在导入一个具有以下结构的 Excel 文件:
| | Cat 1 | | | | Cat 2 | | | Total |
|code| a | b | c | d | a | b | c | |
|data| data |data|data|data| data |data|data| data |
我想将信息保留在双标题行中,因此我使用:
df = pd.read_excel(file, sheet, header=[0,1]
但这给了我以下 MultiIndex: print(df.columns)
:
MultiIndex([('Unnamed: 0_level_0', 'code'),
( 'Cat 1', 'a'),
( 'Cat 1', 'b'),
etc.
( 'Cat 2', 'a'),
( 'Cat 2', 'b'),
etc.
( 'Total','Unnamed: 8_level_1')],)
我正在寻找一种方法来折叠unnamed: x_level_y
列,以便我可以简单地使用df['code']
或df['Total']
访问它们。 我已经尝试过df.rename(columns={'Unnamed: 0_level_0: ''})
,但是如果我不知道缺少哪些级别,这是不可概括的,并且不允许我只访问该列单层名称。 我发现的其他答案是关于删除列名中包含Unnamed
的任何列,但我想保留这些列及其包含的数据。
您可以重新创建 MultiIndex 并将现有名称放在任何级别包含Unnamed
的所有列的级别 0 中:
df.columns = pd.MultiIndex.from_tuples(
[(c[1],'') if 'Unnamed' in c[0] else
(c[0],'') if 'Unnamed' in c[1] else
c
for c in df.columns.to_list()])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.