将熊猫数据框中的单个标题转换为多个标题

时间:2021-03-31 04:34:12

标签: python pandas dataframe

嗨,我有以下带有标题和数据的数据框

   T  |  A - x | A - y | B - x | B - y |
1  m  |    a   |   b   |    c  |   d   |
2  n  |    a   |   b   |    c  |   d   |

其中 12 只是索引

如何将其转换为以下两种格式?

   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   |

提前致谢

1 个答案:

答案 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}}
相关问题