python - Pandas:检查一个数字是否连续多次出现

标签 python pandas

假设我有一个如下所示的数据框。我想要的是,如果列 a、b、c 之间的数字出现最多,那么它应该输出该数字,或者如果所有三个数字都不同,则取 a 的数字。比如第一行,1和5中出现最多的1,那么d中输出的就是1。但是第二行,a,b,c列的11,2,7这三个数都不一样,输出的是列的值a(11),所以d中的输出为11

list   a  b   c  
 1     1  5   1 
11    11  2   7 
 0     0  0   0 
 9     5  9   5 
 8     8  2   7  

预期输出

list   a  b   c  d 
 1     1  5   1  1
11    11  2   7  11
 0     0  0   0  0
 9     5  9   5  5
 8     8  2   7  8 

最佳答案

scipy计算模式,但我很惊讶没有在 numpy 中找到它。

import pandas as pd
import numpy as np
from scipy import stats

df = pd.DataFrame([[1, 1, 5, 1],
                   [11, 11, 2, 7],
                   [0, 0, 0, 0],
                   [9, 5, 9, 5],
                   [8, 8, 2, 7]],
                  columns=['list', 'a', 'b', 'c'])

df['d'], df['count'] = stats.mode(df[['a', 'b', 'c']].values, axis=1)
df.loc[df['count'] == 1, 'd'] = df['a']
df = df.drop('count', 1)

关于python - Pandas:检查一个数字是否连续多次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48392604/

相关文章:

python - 来自代码编辑器的 common.py 文件的断言错误

python - 错误模块'对象没有属性'LANCZOS

python - 通过检查 pandas 数据框来替换单词

python - 为什么 Pandas 或 numpy 中没有正确的 datetime.time 类型?

python - 定制 Pandas 宽到长

python - 按多列分组以查找重复行 Pandas

python - 如何为以下情况定义查询过滤器?

python - 在循环中,如果不包含键,则只添加到字典或列表或元组

python - 从 python 调用 EMBOSS 程序时遇到问题

python - 需要一种从多列和多行返回值的方法