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

基于另一DataFrame的值统计目标DataFrame行内非空值(Pandas求助)

基于另一个Pandas DataFrame新增行非空值统计列的解决方案

嘿,我来帮你搞定这个问题!从你的示例数据来看,你想要给df1新增一列,这列的值对应df2每行的非空(这里应该是指非0值)数量对吧?下面是具体的实现步骤:

1. 先还原你的示例数据

首先我们先把你给出的两个DataFrame用代码创建出来,方便测试:

import pandas as pd

df1 = pd.DataFrame({
    'a_1': [0, 1, 0],
    'a_2': [2, 3, 0],
    'a_3': [5, 4, 0]
})

df2 = pd.DataFrame({
    'b_1': [0, 1, 0],
    'b_2': [0, 0, 0],
    'b_3': [1, 1, 0]
})

2. 统计每行非空值并新增列

我们可以用Pandas的布尔判断和按行求和来快速实现:

# 统计df2每行的非0值数量,将结果作为新列添加到df1中
df1['non_zero_count'] = df2.ne(0).sum(axis=1)

代码解释:

  • df2.ne(0):生成一个布尔型DataFrame,所有不等于0的元素会被标记为True,等于0的标记为False
  • sum(axis=1):按行对布尔值求和(True会被视为1,False视为0),得到的就是每行非0值的数量
  • 直接将这个结果赋值给df1的新列non_zero_count,Pandas会自动按索引对齐行,完全不用担心顺序问题

3. 最终结果

运行完代码后,df1会变成这样:

a_1a_2a_3non_zero_count
0251
1342
0000

如果你的“非空值”指的是Pandas中的NaN(缺失值),只需要把代码改成下面这样就行:

df1['non_null_count'] = df2.notna().sum(axis=1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:52:51