DataFrame追加异常:欲行追加却成列追加,求问题排查方案
问题原因与解决方案
这种情况几乎都是因为两个DataFrame的列名不匹配导致的!
当你调用df1.append(df2)时,pandas会按照列名进行对齐合并:如果两个DataFrame的列名完全一致,才会把df2的行追加到df1底部;但如果列名不同(哪怕是大小写差异、列顺序不一样,或者列的数量不一致),pandas会保留所有列,缺失的位置用NaN填充,看起来就像是把df2的列“拼”到了df1右侧。
具体排查与解决步骤:
先检查列名是否一致
运行以下代码确认两个DataFrame的列名:print("df1列名:", df1.columns) print("df2列名:", df2.columns)如果列名不同,把df2的列名改成和df1完全一致:
# 直接复用df1的列名 df2.columns = df1.columns要是列顺序不对,也可以手动指定列顺序对齐:
df2 = df2[df1.columns]推荐使用
pd.concat()替代append()
从pandas 1.4.0版本开始,append()方法已经被弃用了,官方更推荐用pd.concat(),逻辑更清晰,还能避免一些隐性问题:import pandas as pd appendDf = pd.concat([df1, df2], ignore_index=True)其中
ignore_index=True会重置合并后的索引,避免出现重复索引的问题。确认列数一致
还要确保两个DataFrame都是2列,要是其中一个列数不对,合并后自然会出现多列的情况。
内容的提问来源于stack exchange,提问作者user3476463
相关产品推荐
相关产品推荐

