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

Python中如何对三个DataFrame逐元素执行多数投票生成新DataFrame

Pandas逐位置取多数值生成新DataFrame实现方案

三个结构完全对齐的0-1值DataFrame,可通过以下两种方式实现逐位置取出现次数≥2的元素,最终得到预期结果:

方法1:0-1值场景高效实现

利用0和1的数值特性,三个对应位置值求和后,结果≥2代表1出现次数≥2,否则代表0出现次数≥2,运算效率最高:

import pandas as pd
# 构造三个原始DataFrame
data1= [[0, 0, 1, 1], [1,0,1,0], [0,1,1,0], [1,1,0,1]]
dataframe1 = pd.DataFrame(data1, columns=['0', '1', '2', '3'])
data2 = [[1,0,1,0], [0,0,1,0], [0,1,0,1], [0,0,0,1]]
dataframe2 = pd.DataFrame(data2, columns=['0', '1', '2', '3'])
data3 = [[1,0,1,0], [0,0,1,0], [0,0,0,0], [0,1,0,1]]
dataframe3 = pd.DataFrame(data3, columns=['0', '1', '2', '3'])

# 逐位置计算多数值
result = ((dataframe1 + dataframe2 + dataframe3) >= 2).astype(int)
print(result)

运行输出结果完全匹配预期:

0  1  2  3
0  1  0  1  0
1  0  0  1  0
2  0  1  0  0
3  0  1  0  1

方法2:通用场景实现(适配任意取值)

如果单元格取值不局限于0和1,可通过拼接后分组取众数的方式实现,三个元素的众数即为出现次数≥2的多数值:

result = pd.concat([dataframe1, dataframe2, dataframe3]).groupby(level=0).agg(lambda x: x.mode().iloc[0])

注意:使用该方法前需确认三个DataFrame的行、列顺序完全一致,避免索引错位导致计算错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 12:54:16