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

Python DataFrame按personId计算相对频率的实现方法

按personId计算True标签相对频率的实现

核心思路

利用True等价于数值1、False等价于0的特性,先将label列的NaN填充为False(视为0),再对分组后的label列取均值,得到的结果就是count(True)/(count(True)+count(False)),即目标的relative_frequency。

简洁实现代码

import pandas as pd

# 示例数据
data = {
    'date': ['2022-07-20', '2022-07-30', '2022-08-05', '2022-09-11'],
    'personId': [1023, 1023, 1023, 1001],
    'label': [False, False, True, False]
}
df = pd.DataFrame(data)

# 处理NaN并计算相对频率
relative_freq = df.groupby('personId')['label'].apply(lambda x: x.fillna(False).mean()).rename('relative_frequency')

# 输出结果
print(relative_freq)

结果说明

  • personId=1023:1个True,共3条数据,结果为1/3≈0.333
  • personId=1001:0个True,共1条数据,结果为0
  • 若某personId的label全为NaN,填充后全为False,结果为0;若全为True,结果为1,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 20:10:28