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

如何对两个Pandas DataFrame执行逻辑OR运算得到预期结果

解决Pandas两个DataFrame逻辑OR运算非公共列返回NaN的问题

问题根因

直接对列不一致的DataFrame使用|运算符做逻辑或运算时,pandas会先自动对齐双方的行索引和列名,仅在双方均存在的位置执行运算,仅单侧存在的位置默认填充NaN,而NaN参与逻辑或运算的结果仍为NaN,因此会出现非公共列结果为NaN的问题。

可行解决方法

方法1:先对齐DataFrame填充0再运算

先通过align方法把两个DataFrame的行列补全,缺失位置填充0,再执行逻辑或运算:

import pandas as pd

df1 = pd.DataFrame.from_dict([{'call_id':'aa','486':0,'487':1}])
df2 = pd.DataFrame.from_dict([{'call_id':'aa','503':1,'487':1}])    
df1 = df1.set_index('call_id')
df2 = df2.set_index('call_id')  

# 对齐行列,缺失值填充0
df1_aligned, df2_aligned = df1.align(df2, fill_value=0)
df3 = df1_aligned | df2_aligned

方法2:使用combine方法指定运算规则

直接调用combine方法,指定运算逻辑的同时设置缺失值填充为0:

df3 = df1.combine(df2, lambda s1, s2: s1 | s2, fill_value=0)

两种方法运行后得到的df3均符合预期结果:

486  487  503
call_id               
aa       0    1    1

内容的提问来源于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:18:01