如何合并列数不等的两个Pandas DataFrame并保留全部列?
解决方法:合并DataFrame并保留所有列(缺失值自动填充)
原代码报错的核心原因是np.vstack要求输入的数组列数完全一致,但df1有2列、df2有3列,列数不匹配导致运行失败;另外就算列数一致,这种方式也只会保留df1的列名,丢失df2的其他列,完全不符合需求。
直接使用pandas内置的pd.concat()函数就能完美解决问题,它会自动对齐两个DataFrame的列名,不存在的列会自动填充缺失值(NaN):
import pandas as pd df1 = pd.DataFrame({'a':[1,2,3],'y':[7,8,9]}) df2 = pd.DataFrame({'b':[10,11,12],'x':[13,14,15],'y':[16,17,18]}) # 合并两个DataFrame,忽略原索引并自动对齐列 result_df = pd.concat([df1, df2], ignore_index=True) print(result_df)
运行结果:
a y b x 0 1.0 7.0 NaN NaN 1 2.0 8.0 NaN NaN 2 3.0 9.0 NaN NaN 3 NaN 16.0 10.0 13.0 4 NaN 17.0 11.0 14.0 5 NaN 18.0 12.0 15.0
如果需要将缺失值替换为指定值(比如0),可以在合并后调用fillna():
result_df = pd.concat([df1, df2], ignore_index=True).fillna(0)
内容的提问来源于stack exchange,提问作者Bogaso
相关产品推荐
相关产品推荐

