首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >列表的dataframe列中的计数值

列表的dataframe列中的计数值
EN

Stack Overflow用户
提问于 2022-07-26 13:00:57
回答 2查看 70关注 0票数 0

我在dataframe中有一个列,它看起来像这样

代码语言:javascript
复制
0                                                   NaN
1                                              ["arts"]
2                                       ["sports", "tech"]
3     ["arts", "finance", "health", "sports", "science"...
4                            ["finance", "sports", "tech"]
5                    ["arts", "finance", "sports", "tech"]
6     ["arts", "finance", "health", "sports", "science"...
7                            ["arts", "sports", "science"]

我想知道艺术在所有这些列表中发生了多少次。然而,在尝试column.explode().value_counts(sort=True)时,我只得到了一个基本的发行版,其中包含了一些我不想要的选项。

代码语言:javascript
复制
["tech"]                                                   5
["arts", "finance", "sports", "tech"]                         2
["arts", "sports"]                                            2
["finance", "sports"]                                         1
["arts"]                                                   1

我甚至尝试使用计数器collections.Counter(itertools.chain.from_iterable(v.split(',') for v in column)),但是我得到了下面的错误'float' object has no attribute 'split'

有什么指示吗?

EN

回答 2

Stack Overflow用户

发布于 2022-07-26 13:07:11

如果column不是太长,那么一个简单的嵌套循环应该工作得很好:

代码语言:javascript
复制
count = 0
for str_list in column:
    for name in str_list:
        if name == "arts":
            count += 1

print(count)
票数 0
EN

Stack Overflow用户

发布于 2022-07-26 13:14:37

通过执行以下操作,可以创建包含艺术的行的掩码:

代码语言:javascript
复制
mask = df['industry'].apply(lambda x: 'comedy' in x)

然后将数据限制在新的掩码上。

代码语言:javascript
复制
df = df[mask]

从这里开始,您应该能够使用len(df)或类似的东西。

如果您要寻找的行业可以在每一行中出现不止一次,您可以使用您的迭代工具的想法。浮点数错误来自于试图拆分NaN,所以在尝试连接列表之前,请确保使用dropna()。

代码语言:javascript
复制
list(itertools.chain.from_iterable(df['industry'].dropna().values)).count('arts')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73123842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档