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

如何对含字符串值的两个Pandas DataFrame执行逻辑OR运算

解决方案

你需要的自定义混合类型逻辑OR运算,无法直接用pandas原生|运算符实现(该运算符仅支持布尔/数值运算,无法处理字符串和空值场景),按以下方式实现即可:

完整实现代码

import pandas as pd

# 原有初始化逻辑
df1 = pd.DataFrame.from_dict([{'call_id':'aa','486':'2021-09-01','487':0}])
df2 = pd.DataFrame.from_dict([{'call_id':'aa','503':1,'487':1}])   
df1 = df1.set_index('call_id')
df2 = df2.set_index('call_id')

# 自定义OR逻辑函数
def custom_or(x, y):
    if pd.isna(x):
        return y
    if pd.isna(y):
        return x
    return x if bool(x) else y

# 执行合并运算
df3 = df1.combine(df2, custom_or)

逻辑说明

代码完全匹配你提出的运算规则:

  • 字段仅在单个DataFrame中存在时,空值侧直接返回另一侧的非空值
  • 双侧都有值时遵循逻辑OR判定规则:非空字符串、1的布尔结果为真,0的布尔结果为假,优先返回真值,刚好满足0和1运算输出1、字符串原样保留的要求。

运行后输出的df3和你期望的结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 08:42:03