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
相关产品推荐
相关产品推荐

