本文介绍了如何对 pandas 列进行多数表决的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个数据框,其中有10个不同的列,A1A2,...,A10.这些列包含yn.如果大多数列(A1A2,...,A10)分别为yn,则我想创建另一个值为y的列.我该怎么办?

I have a dataframe which has 10 different columns, A1, A2, ...,A10. These columns contain y or n. I'd like to create another column whose value is y if the majority of columns (A1, A2, ...,A10) are y and n otherwise. How can I do this?

推荐答案

使用 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


如果有必要处理真正的多数决定与分裂决定之间的区别,则可以使用 numpy.where .例如:


If it is necessary to handle the distinction between true majority and split decisions, you could use numpy.where. eg:

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

这篇关于如何对 pandas 列进行多数表决的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-26 19:51