当某些列具有多个分隔符时,将pandas数据帧从wide转换为long

时间:2017-07-16 03:29:08

标签: python pandas

来自Convert pandas dataframe from wide to long。如何扩展解决方案以适用于以下形式的数据库:

a_1  ab_col_1  ac_1    a_2   ab_col_2   ac_2
2      3        4      5     6          7 

这里的问题是某些列中的重复分隔符

1 个答案:

答案 0 :(得分:1)

您可以将rsplit与参数n=1用于MultiIndex,然后按stack重新塑造,最后使用reset_index删除MultiIndex:< / p>

df.columns = df.columns.str.rsplit('_', expand=True, n=1)
df = df.stack().reset_index(drop=True)
print (df)
   a  ab_col  ac
0  2       3   4
1  5       6   7
df.columns = df.columns.str.rsplit('_', expand=True, n=1)
df = df.stack().reset_index(level=0, drop=True)
print (df)
   a  ab_col  ac
1  2       3   4
2  5       6   7