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

如何按条件合并两个Pandas DataFrame:A==0时保留df1数据

解决方案

步骤说明

针对df2的B列做条件替换:当A列值为0时,取df1对应行的B值;其余情况保留df2原B值。df1中存在df2没有的行(如索引5、6),无需处理这些行。

代码实现

import pandas as pd

# 构造示例DataFrame
df1 = pd.DataFrame({
    'A': [0, 0, 1, 1, 2, 'Ciao', 3],
    'B': [3, 2, 5, 3, 5, 'log', 4]
})

df2 = pd.DataFrame({
    'A': [0, 0, 1, 1, 2],
    'B': [-1, 20, -2, 33, 17]
})

# 核心逻辑:替换df2中A==0的B值为df1对应行的B值
df2.loc[df2['A'] == 0, 'B'] = df1.loc[df1['A'] == 0, 'B'].values

print(df2)

输出结果

A   B
0  0   3
1  0   2
2  1  -2
3  1  33
4  2  17

关键细节

  • 用df.loc[条件, 列名]精准定位需要替换的行和列;
  • 加.values避免pandas索引对齐问题,确保df1中A==0的两行B值(3、2)直接匹配到df2对应行;
  • df1中额外的行不影响结果,只处理df2存在的行范围。

内容的提问来源于stack exchange,提问作者emax

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 09:50:26