python - 当某些列有多个分隔符时,将 pandas 数据框从宽转换为长

标签 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 

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

最佳答案

您可以使用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/

相关文章:

Python Pandas 循环字典键(元组)并绘制变量相互关系

python - 如何在Python中按另一列的条件过滤时取一列的平均值

python - 如何使用pandas计算最大点击间隔?

python - 在 64 位操作系统上 CPU 使用率高的原因是什么?

python - 获取由我公司完成的 DHL 的所有追踪号码

python-3.x - 如何在 Pandas 中将时间绘制为 x 轴

python - 如何为 PySpark 数据框创建 seaborn 线图?

python - 我可以在方法链中使用 pd.drop 来删除特定行吗?

python - 如何从 sqlite 查询中获取 dict?

python - 在 webhook 中解析 JSON