我想知道如何解决熊猫中的以下问题:
我有一个数据框,其中有许多行具有不同的值,并且想找出每行出现最高值的频率。我已经使用df2 ['MAX_Value'] = df2.max(axis = 1)来获取每行的最大值。
这是我的数据框示例:
Col1 Col2 Col3 Col4 Col5 Col6 MAX_Value
0 5 6 6 6 3 6
谢谢!
答案 0 :(得分:0)
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
答案 1 :(得分:0)
如果我理解您的要求是正确的:
由于您已经具有MAX_value列,您可以这样做:
df2.MAX_value.value_counts()
让我知道这是否是您想要的! :)
答案 2 :(得分:0)
您也可以只使用一个简单的groupby:
df2.groupby('MAX_Value').Col1.count()