Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 不同列中包含的值的计数器_Python_Pandas - Fatal编程技术网

Python 不同列中包含的值的计数器

Python 不同列中包含的值的计数器,python,pandas,Python,Pandas,我需要从多个列中计算值并将其分配给新列注意:我确信列的值类型是相同的。我想不出一个解决办法。我知道我可以比较两个系列,但如何比较7列并获得最频繁的值 Column1 Column2 Column3 Result x x z x y y x y x z y neutral z x z z x z

我需要从多个列中计算值并将其分配给新列注意:我确信列的值类型是相同的。我想不出一个解决办法。我知道我可以比较两个系列,但如何比较7列并获得最频繁的值

Column1  Column2 Column3 Result
   x        x       z       x
   y        y       x       y
   x        z       y     neutral
   z        x       z       z
   x        z       z       z

抱歉,如果我在解释时没有那么明确

我试过:

df_partial.mode(axis='columns')

但是还有其他方法吗?

以下方法应该有效:

from collections import Counter
df['Result']=''
for i in range(len(df)):
    l=list(df.iloc[i, :])
    l=[x for x in l if str(x) != 'nan']
    d=dict(Counter(l)) 
    m=sorted(list(d.values()))
    if m[-1]==m[-2]:
        df.Result.iloc[i]='neutral'
    else:
        df.Result.iloc[i]=max(d, key=d.get)

如果相同数量的值出现,可能会有所帮助?我想这是第一个。但我想指定为中立。它可以工作,但没有提供足够的功能抱歉,我错了,我做了一些更改,以便正确处理此场景。然而,我只添加了绝对相等频率的情况。如果值的频率为eg 331(某些值相等,但并非所有值),则情况如何?您希望在这个案例中得到什么结果?例如,以下7列的场景:xyxyzyeah,这实际上是另一种情况。谢谢这也应该算是我做出的改变。现在,如果两个更高的频率相等,结果将是“中性”(我想你不介意在较低的频率中相等,例如在511的情况下,尽管在较低的频率中相等,但你想要5的值)我还必须检查空字符串,因为我们首先初始化了新列l=[x对于l中的x,如果str(x)!=']