当数据帧的列包含多个值时选择数据帧的行

2024-06-15 15:28:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个pandas数据框,其中“genres”列有多个值,用“|”分隔。我在下面放了一张照片。你知道吗

包含电影详细信息的数据帧:

enter image description here

如果我使用split函数,它将被转换成一个不可修改的列表。你知道吗

现在我只想在流派中包含单词“Action”时选择数据帧的行?我该怎么做?你知道吗

提前谢谢。你知道吗


Tags: 数据函数pandas列表电影详细信息action单词
2条回答

这里有一个使用set的解决方案:

df = pd.DataFrame({'genres': ['A|B|C|D', 'A|B|C', 'B|D']})

res = df[df['genres'].str.split('|').apply(set) >= {'D'}]

print(res)

    genres
0  A|B|C|D
2      B|D

这可以自然地扩展到多种类型:

res = df[df['genres'].str.split('|').apply(set) >= {'A', 'B'}]

print(res)

    genres
0  A|B|C|D
1    A|B|C

您可以使用:

df = df[df['genres'].str.contains("Action")]

示例:

df = {'genres' : ('Action', 'crime', 'Action|crime', 'Romance|Action', 'Comedy'),'runtime' : (1,3,5,6,7)}
df = pd.DataFrame(df)

输出:

           genres  runtime
0          Action        1
2    Action|crime        5
3  Romance|Action        6

相关问题 更多 >