比如说我有一个 DataFrame
其中一列的值是一个 set
:
df = pd.DataFrame([{'song': 'Despacito', 'genres': {'pop','rock'}},
{'song': 'We will rock you', 'genres': {'rock'}},
{'song': 'Fur Eliza', 'genres': {'piano'}}])
print(df)
song genres
0 Despacito {rock, pop}
1 We will rock you {rock}
2 Fur Eliza {piano}
我如何选择行与 genres
与预期的类型重叠?例如,我希望
df[~df['genres'].intersection({'rock', 'metal'})]
来返回前两首歌曲。
song genres
0 Despacito {rock, pop}
1 We will rock you {rock}
很明显,这将失败,因为 Series
没有 intersection()
方法,但你懂的。有没有办法用熊猫的 DataFrame
或 DataFrame
是不是适合我的目标的结构?
解决方案:
使用 isdisjoint
方法与 Series.map
:
df = df[~df['genres'].map({'rock', 'metal'}.isdisjoint)]
print (df)
song genres
0 Despacito {rock, pop}
1 We will rock you {rock}