You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas合并DataFrame时索引不匹配导致赋值错误的问题求助

Pandas合并DataFrame时索引不匹配导致赋值错误的问题求助

我现在在Python的Pandas里尝试合并两个DataFrame——df1和df2,想基于Column1进行合并,然后把df2里Column2的值赋值给df1的Column2。

这是我写的代码:

df1 = df1.reset_index()

merged = df1.merge(df2, on='Column1', how='left', indicator=True, suffixes=('_df1', '_df2'))

mask = ( 
     (df1['Column1'].notna()) &
     (merged['_merge'] == 'both')
     )

df1.loc[mask, 'Column2'] = merged.loc[mask, 'Column2_df2']

但是现在出现了索引混乱的情况!打印merged的时候,值是正确匹配的,但给df1赋值之后再打印,Column2的数值完全不对,而且df1的索引和merged里的对应不上。

我试过在使用.loc的时候加上reset_index,也试过完全不重置索引,但结果都一样。

下面是我的DataFrame示例(因为我处理的是百万级的大数据集,所以这里模拟了无关的索引情况):

# 输入数据
df1 = pd.DataFrame({'Column1': ['A', 'B', None, 'D'],
                    'Column2': [None, None, None, None]
                   })
df2 = pd.DataFrame({'Column1': ['B', 'C', 'E', 'A'],
                    'Column2': [10, 20, 30, 40]
                   })
# merged的输出:
   Column1_df1  Column1_df2  Column2_df1  Column2_df2  _merge
44           A            A         None           40    both
57           B            B         None           10    both
# 赋值后df1的实际输出:
   Column1  Column2 
0       A        30     
1       B        10  
3    None      None
6       D      None
# 期望的df1输出:
   Column1  Column2 
44       A       40     
57       B       10  
3     None     None
6        D     None

提前感谢大家的帮助!

备注:内容来源于stack exchange,提问作者melca

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 17:49:35