来自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
这里的问题是某些列中的重复分隔符
最佳答案
您可以使用rsplit
使用参数 n=1
表示 MultiIndex
,然后按 stack
reshape 最后一次使用 reset_index
删除MultiIndex
:
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
关于python - 当某些列有多个分隔符时,将 pandas 数据框从宽转换为长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45124686/