python - 如何对 pandas 中的列进行多数投票

标签 python pandas

我有一个数据框,其中有 10 个不同的列:A1A2、...、A10。这些列包含 yn。如果大多数列 (A1, A2, ..., A10)否则为 yn。我怎样才能做到这一点?

最佳答案

使用DataFrame.mode :

df['majority'] = df.mode(axis=1)[0]

示例

np.random.seed(0)
df = pd.DataFrame(np.random.choice(['y', 'n'], size=(10, 10)))
print(df)

   0  1  2  3  4  5  6  7  8  9
0  y  n  n  y  n  n  n  n  n  n
1  n  y  y  n  y  y  y  y  y  n
2  y  n  n  y  y  n  n  n  n  y
3  n  y  n  y  n  n  y  n  n  y
4  y  n  y  n  n  n  n  n  y  n
5  y  n  n  n  n  y  n  y  y  n
6  n  y  n  y  n  y  y  y  y  y
7  n  n  y  y  y  n  n  y  n  y
8  y  n  y  n  n  n  n  n  n  y
9  n  n  y  y  n  y  y  n  n  y

df['majority'] = df.mode(axis=1)[0]
print(df)

   0  1  2  3  4  5  6  7  8  9 majority
0  y  n  n  y  n  n  n  n  n  n        n
1  n  y  y  n  y  y  y  y  y  n        y
2  y  n  n  y  y  n  n  n  n  y        n
3  n  y  n  y  n  n  y  n  n  y        n
4  y  n  y  n  n  n  n  n  y  n        n
5  y  n  n  n  n  y  n  y  y  n        n
6  n  y  n  y  n  y  y  y  y  y        y
7  n  n  y  y  y  n  n  y  n  y        n
8  y  n  y  n  n  n  n  n  n  y        n
9  n  n  y  y  n  y  y  n  n  y        n
<小时/>

如果需要处理真正多数决策和 split 决策之间的区别,您可以使用 numpy.where 。例如:

mode = df.mode(axis=1)

df['majority'] = np.where(mode.isna().any(1), mode[0], 'split')
print(df)

   0  1  2  3  4  5  6  7  8  9 majority
0  y  n  n  y  n  n  n  n  n  n        n
1  n  y  y  n  y  y  y  y  y  n        y
2  y  n  n  y  y  n  n  n  n  y        n
3  n  y  n  y  n  n  y  n  n  y        n
4  y  n  y  n  n  n  n  n  y  n        n
5  y  n  n  n  n  y  n  y  y  n        n
6  n  y  n  y  n  y  y  y  y  y        y
7  n  n  y  y  y  n  n  y  n  y    split
8  y  n  y  n  n  n  n  n  n  y        n
9  n  n  y  y  n  y  y  n  n  y    split

关于python - 如何对 pandas 中的列进行多数投票,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59119059/

相关文章:

python - numpy argsort 性能缓慢

python - 使用另一列的值获取某一列的值

python - 选择第 n 个中断组索引之前的列

python - 当数据帧包含混合数据类型时,Pyarrow from_pandas 会使解释器崩溃

python - 取消透视 Pandas 数据框的最佳方法

python - 如何用 pandas 打开德语 csv 文件?

python - 如何在任意位置插入元素到列表中?

python - 将 django 应用程序迁移到多个服务器

python - 迭代两个数据帧的行

Python - 数据框 - 无法删除重复项