gpt4 book ai didi

python - 使用规则返回最高计数值的函数

转载 作者:行者123 更新时间:2023-11-30 22:21:16 25 4
gpt4 key购买 nike

我有如下所示的两列,并尝试返回第二列的最高计数,但它只是返回给我评分的最高计数,而不考虑性别

数据:

打印(df)

   AGE GENDER rating
0 10 M PG
1 10 M R
2 10 M R
3 4 F PG13
4 4 F PG13

代码:

 s = (df.groupby(['AGE', 'GENDER'])['rating']
.apply(lambda x: x.value_counts().head(2))
.rename_axis(('a','b', 'c'))
.reset_index(level=2)['c'])

输出:

print (s[F])
('PG')

print(s[M]

('PG', 'R')

最佳答案

这是该文件的标准库解决方案:

%%file "test.txt"
gender rating
M PG
M R
F NR
M R
F PG13
F PG13

给定

import collections as ct


def read_file(fname):
with open(fname, "r") as f:
header = next(f)
for line in f:
gender, rating = line.strip().split()
yield gender, rating

代码

filename = "test.txt"

dd = ct.defaultdict(ct.Counter)
for k, v in sorted(read_file(filename), key=lambda x: x[0]):
dd[k][v] += 1

{k: v.most_common(1) for k, v in dd.items()}
# {'F': [('PG13', 2)], 'M': [('R', 2)]}
<小时/>

详细信息

文件的每一行都会被解析并添加到 defaultdict 中。键是性别,但值是每个性别的每个评级的 Counter 对象。调用 Counter.most_common() 来检索出现次数最多的事件。

由于数据是按性别分组的,因此您可以探索更多信息。例如,每个性别的独特评分:

{k: set(v.elements()) for k, v in dd.items()}
# {'F': {'NR', 'PG13'}, 'M': {'PG', 'R'}}

关于python - 使用规则返回最高计数值的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48680608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com