嗨,我有以下带有标题和数据的数据框
T | A - x | A - y | B - x | B - y |
1 m | a | b | c | d |
2 n | a | b | c | d |
其中 1
和 2
只是索引
如何将其转换为以下两种格式?
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 |
提前致谢
答案 0 :(得分:3)
您可以为带分隔符的列创建split
,首先将所有非分隔符列转换为DataFrame.set_index
索引,然后使用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
如果需要在 #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
中显示所有级别,请选中 documentation:
display.multi_sparse
真实
“稀疏化”多索引显示(不显示组内外层重复元素)
{{1}}