我必须找到列的模式。当两个值的模式相同并且python按字母顺序返回我时会出现问题

Posted

技术标签:

【中文标题】我必须找到列的模式。当两个值的模式相同并且python按字母顺序返回我时会出现问题【英文标题】:I have to find the mode for a column. There is issue when the mode is same for two values and python is returning me in alphabetical order 【发布时间】:2021-12-23 19:37:48 【问题描述】:

我有以下数据。

    #   Priority
0   1   Low
1   2   Low
2   3   Medium
3   4   Medium
4   5   Critical
5   6   Low
6   7   Medium
7   8   High
8   9   Critical
9   10  Low
10  11  Medium
11  12  High

我有分数的键值对,例如,

score_by_priority_category = dict()
score_by_priority_category['Critical'] = 1
score_by_priority_category['High'] = 0.6
score_by_priority_category['Medium'] = 0.4
score_by_priority_category['Low'] = 0.2

当我发现“优先级”列的模式时,它给了我“低”,但我想要“中”,因为它的分数更高。

vc = df['Priority'].value_counts()
candidate_mode_value=list(df['Priority'].mode().to_dict().values())[0]

在上述情况下,返回的候选模式值是“低”。当有多个相同模式的值时,如何获取得分更高的值。

【问题讨论】:

【参考方案1】:

使用内置max函数的关键参数:

counts = df["Priority"].value_counts().to_dict()
res = max(counts, key=lambda x: (counts[x], score_by_priority_category[x]))
print(res)

输出

Medium

【讨论】:

以上是关于我必须找到列的模式。当两个值的模式相同并且python按字母顺序返回我时会出现问题的主要内容,如果未能解决你的问题,请参考以下文章

如何通过比较火花中相同列的两个数据帧来计算列值的数量

JAVA设计模式之原型模式(prototype)

Apache Flink - 匹配具有相同值的字段

Python3.7 比较两个Excel文件指定列的值的异同,并将核对结果写入Excel中

SQLITE3 - 删除具有相同值的多个列的行

比较具有相同模式的两个表以获得数据差异