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

如何在Pandas中基于单元格值创建并填充Freq_1与Freq_2统计列

解决方法:给DataFrame添加每行数字出现次数的列

要实现你需要的功能,其实可以利用Pandas里的eq()方法和按行求和的操作,非常简洁高效。

首先,先回顾下你的DataFrame结构:

import pandas as pd
d = {'feature1': [1, 22,45,78,78], 'feature2': [33, 2,2,65,65], 'feature3': [100, 2,359,87,2],}
df = pd.DataFrame(data=d)

输出的df是:

feature1  feature2  feature3
0         1        33       100
1        22         2         2
2        45         2       359
3        78        65        87
4        78        65         2

接下来,我们直接用两行代码就能创建并填充Freq_1和Freq_2列:

# 统计每行中数字1的出现次数,赋值给Freq_1
df['Freq_1'] = df.eq(1).sum(axis=1)
# 统计每行中数字2的出现次数,赋值给Freq_2
df['Freq_2'] = df.eq(2).sum(axis=1)

代码解释:

  • df.eq(1):会生成一个和原df结构相同的布尔DataFrame,所有等于1的元素位置为True(对应数值1),其他为False(对应数值0)。
  • .sum(axis=1):按行对布尔值求和,本质就是统计每行中True的数量,也就是目标数字的出现次数。
  • 最后把求和结果直接赋值给新列,Pandas会自动匹配行索引完成赋值。

执行完代码后,你的df会变成:

feature1  feature2  feature3  Freq_1  Freq_2
0         1        33       100       1       0
1        22         2         2       0       2
2        45         2       359       0       1
3        78        65        87       0       0
4        78        65         2       0       1

完全符合你要求的规则:第一行Freq_1是1,其他行是0;Freq_2第一行是0,第二行是2,第三和第五行是1,第四行是0。

如果以后需要统计其他数字的出现次数,只需要把eq()里的数字换成目标数字就行,非常灵活。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 18:09:04