csv Pandas列在多行中有多个值

amrnrhlw  于 2023-07-31  发布在  其他
关注(0)|答案(3)|浏览(90)

我有一个csv文件中的样本数据集。
| 类型| Genre |
| --| ------------ |
| 罗曼史| Romance |
| 传记,犯罪,戏剧| Biography, Crime, Drama |
| 戏剧| Drama |
| 戏剧,历史| Drama, History |
| 冒险,戏剧,幻想| Adventure, Drama, Fantasy |
| 传记,戏剧| Biography, Drama |
| 传记,戏剧,浪漫| Biography, Drama, Romance |
使用Pandas,我想计算特定类型的总发生率。正如你所看到的,“戏剧”出现在6行,但有些行有其他流派包括在内。
这是我目前拥有的:
df'Year','Genre'.query(“genre == 'Drama'")
它只会返回
| 类型| Genre |
| --| ------------ |
| 戏剧| Drama |
而我需要它返回所有有“Drama”的年份,就像这样
| 类型| Genre |
| --| ------------ |
| 戏剧| Drama |
| 戏剧,历史| Drama, History |
| 冒险,戏剧,幻想| Adventure, Drama, Fantasy |
| 传记,戏剧| Biography, Drama |
| 传记,戏剧,浪漫| Biography, Drama, Romance |
更具体地说,我想计算“Drama”在整个数据集中出现的次数,尽管某些列有多个用逗号分隔的值。我该怎么做呢?

wqnecbli

wqnecbli1#

drama = df[df["Genre"].str.contains("Drama")]

print(len(drama))

字符串

hjzp0vay

hjzp0vay2#

使用str方法,这些方法被“向量化”,然后简单地求和以获得包含"Drama"的条目的总数:
sum(df["Genre"].str.contains("Drama"))

6ie5vjzr

6ie5vjzr3#

如果你想计算戏剧,这应该可以做到:

df[['Year','Genre']].query(
    "genre.str.contains('Drama').count()", engine="python")

字符串

相关问题