【问题标题】:Most common elements in list-column列表列中最常见的元素
【发布时间】:2020-10-16 10:29:52
【问题描述】:

我正在使用 python/pandas。

我有一个这样的数据框:

     date         id         my_column
0    31.07.20     128909     ['hey', 'hi']
1    31.07.20     128914     ['hi']
3    31.07.20     853124     ['hi', 'hello', 'hey']
4    30.07.20     123456     ['hey']
...

超过 1.000.000 行的数据框。我想要 my_column 列中最常用的 10 个单词。

感谢任何帮助。

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    使用Series.explodeSeries.value_counts,默认是排序的值,所以top10 需要前10 个索引值:

    out = df['my_column'].explode().value_counts().index[:10].tolist()
    

    或者你可以使用纯python解决方案来扁平化并计算top10:

    from collections import Counter
    from  itertools import chain
    
    c = Counter(chain.from_iterable(df['my_column']))
    out = [a for a, b in c.most_common(10)]
    

    【讨论】:

    • @BenW - 在我的解决方案之前可以使用import astdf['my_column'] = df['my_column'].apply(ast.literal_eval) 吗?
    • 提供相同的输出。编辑:没关系犯了一个错误。现在可以使用了。
    • 非常感谢。惊人的帮助!让我开心!
    • @BenW - 它将字符串列表转换为列表列表,检查this,小写out = df['my_column'].apply(ast.literal_eval).explode().str.lower().value_counts().index[:10].tolist()use
    • @BenW - 嗯,这意味着值已经是列表或一些错误值
    猜你喜欢
    • 1970-01-01
    • 2010-12-03
    • 2018-09-27
    • 1970-01-01
    • 2021-04-10
    相关资源
    最近更新 更多