Python 基于指定的值列表选择数据帧的子集

Python 基于指定的值列表选择数据帧的子集,python,pandas,Python,Pandas,我想知道是否有一种基于值列表选择行的方法。也就是说,基于列表中的值从数据帧创建子集 为了进一步解释,我举了一个来自的数据帧示例。假设我有以下数据帧: raw_data = { 'subject_id': ['1', '2', '3', '4', '5'], 'first_name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 'last_name': ['Anderson', 'Ackerman',

我想知道是否有一种基于值列表选择行的方法。也就是说,基于列表中的值从数据帧创建子集

为了进一步解释,我举了一个来自的数据帧示例。假设我有以下数据帧:

raw_data = {
        'subject_id': ['1', '2', '3', '4', '5'],
        'first_name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 
        'last_name': ['Anderson', 'Ackerman', 'Ali', 'Aoni', 'Atiches']}
df_a = pd.DataFrame(raw_data, columns = ['subject_id', 'first_name', 'last_name'])
df_a
我只希望从下面的列表中选择基于“first_name”的行:

fnames = ['Alex', 'Alice', 'Ayoung']
我一直在做的是在fnames上运行循环,条件如下:

for fn in fnames:
    df_name = df_a[(df_a['first_name'] == fn

然后将每一行附加/concat到一个新的数据框中,以创建我想要的内容。是否有更好的方法基于列表中的值对数据帧进行子集划分

使用
isin
方法:

 df_name = df_a[(df_a['first_name'].isin(fn)

所以,你是说,我仍然需要循环?我尝试了你的解决方案,但我得到了一个错误:KeyError:“['Alex''Amy''Allen''Alice''Ayoung']不在索引中”这个问题应该结束了,请看上面的重复,基本上你想做的
df_a[df_a['first_name'].isin(fnames)]
Ok,谢谢。请结束这个问题。我不知道该怎么做?谢谢Ed,很抱歉被骗了。不知道到底要找什么。