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

在Pandas中统计DataFrame列值大于等于另一DataFrame列值的次数

为Pandas DataFrame添加基于另一DataFrame的累积计数列

看起来你需要给df添加一列count_greaterandequal,根据你给出的预期输出推断,实际需求应该是:每行的值对应df_2['r_no']中小于等于当前行r_no的元素总数量(按原描述的“大于等于”计算结果和预期不符,这里先按预期结果实现)。下面是具体的解决方案:

第一步:还原原始数据

先构造题目中给出的两个DataFrame:

import pandas as pd

df = pd.DataFrame()
df['r_no'] = [1,1,1,2,3,1,1,1,2]
df['user'] = ['sam','sam','sam','sam','peter','jack','jack','Kris','peter']
df['value'] = [76,76,7,8,8,2,29,2,8]
df['cam_id'] = ['ab','abc','ab','ab','ab','abcd','abcd','abcd','ab']

df_2 = pd.DataFrame()
df_2['r_no'] = [1,3,2,2,4,1,1,3,2,5,7,2,8,9,3]

第二步:核心实现代码

我们用统计频率+累积求和的方式高效计算,避免逐行遍历的低效问题:

# 1. 统计df_2中每个r_no的出现次数,并按r_no从小到大排序
r_no_counts = df_2['r_no'].value_counts().sort_index()

# 2. 计算累积求和,得到每个r_no对应的<=它的总元素数量
cumulative_counts = r_no_counts.cumsum()

# 3. 将结果映射到df的新列,用fillna处理可能的缺失值(比如df有df_2没有的r_no)
df['count_greaterandequal'] = df['r_no'].map(cumulative_counts).fillna(0).astype(int)

# 查看最终结果
print(df['count_greaterandequal'])

输出结果

运行代码后会得到和你预期完全一致的结果:

0     3
1     3
2     3
3     7
4    10
5     3
6     3
7     3
8     7
Name: count_greaterandequal, dtype: int64

代码逻辑解释

  1. value_counts().sort_index():先统计df_2中每个r_no的出现次数,再按r_no从小到大排序,得到的结果如下:
    1    3
    2    4
    3    3
    4    1
    5    1
    7    1
    8    1
    9    1
    Name: r_no, dtype: int64
    
  2. cumsum():对排序后的计数做累积求和,这样每个r_no对应的结果就是所有小于等于它的元素总数量:
    1     3
    2     7
    3    10
    4    11
    5    12
    7    13
    8    14
    9    15
    Name: r_no, dtype: int64
    
  3. map():快速将df中的每个r_no映射到对应的累积计数,比逐行循环计算效率高得多。

补充:如果需求确实是“大于等于当前r_no”

如果你原本的需求真的是统计df_2中大于等于当前行r_no的元素数量,只需要调整排序方向即可:

# 按r_no从大到小排序后累积求和
r_no_counts_desc = df_2['r_no'].value_counts().sort_index(ascending=False)
cumulative_counts_desc = r_no_counts_desc.cumsum()
df['count_greaterandequal'] = df['r_no'].map(cumulative_counts_desc).fillna(0).astype(int)

不过这个结果和你给出的预期不符,所以推测你实际需要的是前面的实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 09:01:40