当数据框的列包含多个值时,选择数据框的行。

3
我有一个pandas数据框,其中“genres”列由"|"分隔的多个值组成。我在下面放了一张图片。
包含电影详情的数据框: enter image description here 如果我使用split函数,它将被转换为不可哈希的列表。
现在我只想选择数据框中的行,当"genres"中包含单词"Action"时,如何做到呢?
提前谢谢。
2个回答

3

以下是使用 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

2
您可以使用以下内容:
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

我不建议这样做。如果一个流派是“动作”,而另一个是“动作和冒险”,怎么办? - jpp
1
好观点..但对于他展示的例子应该没问题。或者他可能也想保留“动作和冒险”。 - Joe
这样怎么样?df = df[df['genres'].str.contains('|'.join(["动作","冒险"]) - Pyd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接