如何用Pandas合并仅含单列的两个DataFrame?
解决方案
你可以通过**全外连接(outer join)**结合列后缀来实现需求,具体代码如下:
import pandas as pd df1 = pd.DataFrame({'x': [1, 2, 3, 4]}) df2 = pd.DataFrame({'x': [1, 2, 3, 5, 6]}) # 执行全外连接,自动给重复列名添加指定后缀 result = pd.merge(df1, df2, on='x', how='outer', suffixes=('_1', '_2')) # 如果需要保留整数类型(避免因NaN转为float),可以使用可空整数类型 result = result.astype({'x_1': 'Int64', 'x_2': 'Int64'}) print(result)
输出结果:
x_1 x_2 0 1 1 1 2 2 2 3 3 3 4 NaN 4 NaN 5 5 NaN 6
关键说明
how='outer':保留两个DataFrame中所有的x值,匹配不上的位置用NaN填充,正好符合你需要的行结构。suffixes=('_1', '_2'):因为两个DataFrame的列名都是x,合并后会自动给来自df1的列加_1后缀,df2的列加_2后缀,无需手动重命名。- 可空整数类型
Int64(注意大写I):解决了Pandas中整数列出现NaN时自动转为float的问题,保留整数显示形式。
内容的提问来源于stack exchange,提问作者Leonardo
相关产品推荐
相关产品推荐

