我想知道如何解决熊猫中的以下问题:
我有一个数据帧,其中包含许多具有不同值的行,并且想知道每行出现最大值的频率。我使用 df2 ['MAX_Value']=df2.max(axis=1( 来获得每行的最大值。
这是我的数据帧示例:
Col1 Col2 Col3 Col4 Col5 Col6 MAX_Value
0 5 6 6 6 3 6
谢谢!
将assign
与 comapring 按eq
和每行sum
一起使用:
max_val = df2.max(axis=1)
count_max = df2.eq(max_val, axis=0).sum(axis=1)
为了提高性能,可以使用numpy
:
arr = df2.values
max_val = arr.max(axis=1)
count_max = (arr == max_val[:, None]).sum(axis=1)
df = df2.assign(MAX_Value = max_val, No = count_max)
print (df)
Col1 Col2 Col3 Col4 Col5 Col6 MAX_Value No
0 0 5 6 6 6 3 6 3
详情:
print (df2.eq(max_val, axis=0))
Col1 Col2 Col3 Col4 Col5 Col6
0 False False True True True False
如果我理解你的任务正确:
由于您已经有列MAX_value,您可以执行以下操作:
df2.MAX_value.value_counts()
让我知道这是否是你要找的! :)
您也可以使用简单的分组:
df2.groupby('MAX_Value').Col1.count()