gpt4 book ai didi

python - 如何计算多列中相同值的个数?

转载 作者:太空宇宙 更新时间:2023-11-04 07:15:34 25 4
gpt4 key购买 nike

例如:

A B C
1 1 2
2 1 2
3 3 3
3 2 1

我想添加一列 D,它表示 ABC 中相同数量的值>.

D
2
2
3
1

最佳答案

选项 1
您可以使用 stack + groupby + value_counts:

df['D'] = df.stack().groupby(level=0).value_counts().max(level=0)

df

A B C D
0 1 1 2 2
1 2 1 2 2
2 3 3 3 3
3 3 2 1 1

如果你想要具有最高模式的数字,链接一个 groupby + head 调用 -

v = (df.stack()
.groupby(level=0)
.value_counts()
.groupby(level=0)
.head(1)
.reset_index(level=0, drop=True)
)

1 2
2 2
3 3
1 1
dtype: int64

df['Num'], df['Num_Mode'] = v.index, v.values   # to assign it

如果多个数具有相同的最高模式,则只返回其中一个。


选项 2
受@Wen 启发的另一个选项,使用 applypd.Series.mode -

df['D'] = df.stack().groupby(level=0).apply(lambda x: pd.Series.mode(x).max())

或者,

df['D'] = df.apply(pd.Series.mode, 1).max(1).astype(int)

df

A B C D
0 1 1 2 2
1 2 1 2 2
2 3 3 3 3
3 3 2 1 1

关于python - 如何计算多列中相同值的个数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48363338/

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