如何删除DataFrame指定列、处理剩余列后无重复恢复原列?
解决方法
你遇到的重复行问题,核心是用错了合并方式——append是按行追加,自然会让行数翻倍;merge/join如果没指定匹配规则,容易触发笛卡尔积导致重复。其实因为df和df2本来就是从同一个数据集拆分出来的,索引完全对应,直接用以下两种简单方法就能精准合并:
方法1:直接将df2的列赋值回处理后的df
这是最省事的方式,列名本来就对应,直接把df2的列塞回去就行:
# 处理完df的操作后执行 df[['col2', 'col3']] = df2
方法2:用pd.concat按列合并
如果不想修改原df,就用concat按列(axis=1)拼接,索引会自动匹配对应行:
import pandas as pd # 处理完df的操作后执行 final_df = pd.concat([df, df2], axis=1)
注意事项
如果处理df的过程中修改过索引(比如重置索引、删除过行),要先同步两者的索引再合并:
# 重置索引,确保df和df2的行一一对应 df = df.reset_index(drop=True) df2 = df2.reset_index(drop=True) # 再执行合并操作 final_df = pd.concat([df, df2], axis=1)
内容的提问来源于stack exchange,提问作者prof31
相关产品推荐
相关产品推荐

