gpt4 book ai didi

python - 从按另一列分组的 pandas 列中的列表中查找频繁元素

转载 作者:行者123 更新时间:2023-12-03 20:05:36 25 4
gpt4 key购买 nike

关闭。这个问题需要更多focused .它目前不接受答案。












想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post .

去年关闭。




Improve this question




我的数据框如下所示

col1      col2
type1 ['A','C','B','D']
type1 ['C','A','F','E']
type1 ['F','E','G','H']
type2 ['A','E','F','G']
type2 ['A','E','J','K']
我必须从 col2 中的列表中找出经常出现在给定用户输入中的元素。
例如,如果用户输入是 A。那么我们必须找到与 A 一起出现的前 3 个元素。这必须为 col1 中的每个值计算。
IE
type1 - most frequent element for A - A,C will be the output
type2 - most frequent element for A - A,E will be the output
此处发布的数据是示例数据。

最佳答案

from collections import Counter

def most_freq(series, input_):
cnt = Counter()
for row in series:
if input_ in row:
for i in row:
cnt[i] += 1
return [k for (k,v) in cnt.most_common(2)]

query = 'A'
df.groupby('col1').agg({'col2': lambda x: most_freq(x, query)})
输出:
        col2
col1
type1 [A, C]
type2 [A, E]
解释:
解决此问题的一种可能方法是使用自定义 aggregate 功能。
它使用 Counter收集每行中按 col1 分组的所有元素计数如果 user input出现,并返回其前 2 次出现。 OP 可以更改参数 2cnt.most_common(2)3如果您正在寻找前 3 次出现。

关于python - 从按另一列分组的 pandas 列中的列表中查找频繁元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62497354/

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