首页 > 解决方案 > 从数据框中选择行,其中列值是字符串列表

问题描述

我有一个数据框,我想根据包含字符串列表的列进行过滤。

例子:

df["artists"].head()

0    ['Sergei Rachmaninoff', 'James Levine', 'Berli...
1                                       ['Dennis Day']
2    ['KHP Kridhamardawa Karaton Ngayogyakarta Hadi...
3                                     ['Frank Parker']
4                                       ['Phil Regan']
Name: artists, dtype: object

                 

我想做一些类似的事情

df[df['artists'] == 'Dennis Day']

但是,这会返回一个空数据框。

我做了其他几次尝试,但似乎无法弄清楚如何按列表过滤,而且我的搜索结果倾向于提供将列表传递给过滤器的方法。

我相信它非常明显,但任何帮助将不胜感激。

谢谢

标签: pythonpython-3.xpandaslistnested-lists

解决方案


使用应用和遮罩

import pandas as pd
df= pd.DataFrame(columns=["artists"])
df.loc[0,"artists"] =   ['Frank Parker','Dennis Day']
df.loc[1,"artists"] =  ['Sergei Rachmaninoff', 'James Levine']

mask = df.artists.apply(lambda row:'Dennis Day' in row)
df = df[mask]
df

推荐阅读