python - 将熊猫数据框中的单个标头转换为多个标头
问题描述
嗨,我有以下带有标题和数据的数据框
T | A - x | A - y | B - x | B - y |
1 m | a | b | c | d |
2 n | a | b | c | d |
where1
和2
are just index
如何将其转换为以下两种格式?
T | A | A | B | B |
| x | y | x | y |
1 m | a | b | c | d |
2 n | a | b | c | d |
T | A | | B | |
| x | y | x | y |
1 m | a | b | c | d |
2 n | a | b | c | d |
提前致谢
解决方案
您可以MultiIndex
为带有分隔符的列创建,首先将所有非分隔符列转换为索引DataFrame.set_index
,然后使用split
:
df = df.set_index('T')
df.columns = df.columns.str.split(' - ', expand=True)
print (df)
A B
x y x y
T
m a b c d
n a b c d
如果仅使用:
df.columns = df.columns.str.split(' - ', expand=True)
print (df)
T A B
NaN x y x y
0 m a b c d
1 n a b c d
获得NaN
第一级T
。
如果需要,可以用空字符串替换它:
df.columns = df.columns.str.split(' - ', expand=True)
f = lambda x: '' if pd.isna(x) else x
df = df.rename(columns=f)
print (df)
T A B
x y x y
0 m a b c d
1 n a b c d
MultiIndex
如果需要在检查文档中显示所有级别:
display.multi_sparse
True
“稀疏化” MultiIndex 显示(不显示组内外层的重复元素)
#if need temporary use option
with pd.option_context('display.multi_sparse', False):
print (df)
A A B B
x y x y
T
m a b c d
n a b c d
推荐阅读
- javascript - MongooseError:操作 `muted-members.insertOne()` 缓冲在 10000 毫秒后超时
- kentico - Kentico - 禁用页面级附件
- python - tensorflow- how to keep column label name when one-hot-encoding?
- java - Jackson - JsonTypeInfo,可以处理骆驼和蛇情况的属性
- c# - Devexpress 未将编辑表单模式更改保存到数据库我如何拦截
- selenium - Selenium 上的 Xpath 问题?
- powershell - Powershell 解决方案:运行旧版 Powershell 不支持的模块
- excel - 在 Excel 中使用文本函数
- bash - 从数字中删除前导 0 会导致值发生变化
- cmake - 如何将编译器优化标志添加到项目中的特定文件?