gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 10:00:47 26 4
gpt4 key购买 nike

我有一个数据框,其中有 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com