来自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
这里的问题是某些列中的重复分隔符
答案 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