如何在Pandas DataFrame中将Y列合并到X列并复制Z列值?
实现方法
先看原始的DataFrame:
X Y Z 0 1 4 True 1 2 5 True 2 3 6 False
要得到目标结构,最直接的方式是拆分后拼接:
- 提取原DataFrame中的
X和Z列 - 提取
Y和Z列,将Y列重命名为X - 把这两部分DataFrame拼接起来并重置索引
对应的代码如下:
import pandas as pd # 创建原始DataFrame df = pd.DataFrame({ 'X': [1,2,3], 'Y': [4,5,6], 'Z': [True, True, False] }) # 拆分并拼接得到结果 part1 = df[['X', 'Z']] part2 = df[['Y', 'Z']].rename(columns={'Y': 'X'}) result = pd.concat([part1, part2], ignore_index=True) print(result)
运行后输出的结果就是:
X Z 0 1 True 1 2 True 2 3 False 3 4 True 4 5 True 5 6 False
如果想用melt函数实现,需要额外调整顺序以匹配目标结构:
# 使用melt的方式 melted = df.melt(id_vars='Z', value_vars=['X', 'Y'], value_name='X', var_name='source_col') result = melted.sort_values(by='source_col').drop('source_col', axis=1).reset_index(drop=True)
这种方法先把X和Y列转为行数据,再按原列名排序,最后去掉辅助列,也能得到相同结果。
内容的提问来源于stack exchange,提问作者RogerKint
相关产品推荐
相关产品推荐

