Pandas使用append合并csv文件列顺序错乱、ytd列错位如何解决
解决方案
你遇到的列排序错乱、ytd列未对齐的问题,是因为旧版pandas的append方法默认会按字母顺序重排列名,且如果两个表列名存在微小差异(如隐藏空格)时会识别为不同列。append方法目前已被pandas官方弃用,推荐使用pd.concat实现拼接,操作如下:
基础实现代码
import pandas as pd dfaq = pd.read_csv('aq2.csv') dfmg1 = pd.read_csv('test10320_2.csv') # concat拼接时设置sort=False即可保留原列顺序,同时自动按列名对齐 dfaq1 = pd.concat([dfmg1, dfaq], ignore_index=True, sort=False)
相关说明
sort=False参数会禁止自动按字母顺序重排列,优先保留第一个传入DataFrame(也就是你代码里的dfmg1)的列顺序- 拼接时会自动按列名匹配对齐,同名的ytd列会自动合并到同一列,仅单个表存在的列对应空缺位置会自动填充
NaN
异常场景处理
如果拼接后仍存在ytd列拆分的情况,说明两个表的ytd列名存在肉眼不可见的差异(如前后空格),可先统一清洗列名再拼接:
# 统一去除所有列名前后的空格 dfaq.columns = dfaq.columns.str.strip() dfmg1.columns = dfmg1.columns.str.strip() # 再执行拼接 dfaq1 = pd.concat([dfmg1, dfaq], ignore_index=True, sort=False)
如果需要严格指定自定义列顺序,可在拼接后手动重排:
# 示例:保留dfmg1的原有列顺序 target_columns = dfmg1.columns.tolist() dfaq1 = dfaq1[target_columns]
内容的提问来源于stack exchange,提问作者jun
相关产品推荐
相关产品推荐

