Python 如何检查字符串列表中的dataframe列值?

Python 如何检查字符串列表中的dataframe列值?,python,pandas,Python,Pandas,我有一个数据框df,想从中创建一个新的数据框df_b,但只获取行的列值df['id']在我的列表数组list_of_id中的行 df['id']和id列表都包含字符串值 我曾想过使用正则表达式,但正则表达式会很大,因为list\u of_id的长度大于20个元素,所以需要在list\u of_id上安装一个生成器,但我不知道如何应用它 我的想法是: list_of_ids = ["thing1", "thing2", "thing3" ] df_b = df[df["id"].apply(lam

我有一个数据框
df
,想从中创建一个新的数据框
df_b
,但只获取行的列值
df['id']
在我的列表数组
list_of_id
中的行

df['id']
id列表都包含字符串值

我曾想过使用正则表达式,但正则表达式会很大,因为
list\u of_id
的长度大于20个元素,所以需要在
list\u of_id
上安装一个生成器,但我不知道如何应用它

我的想法是:

list_of_ids = ["thing1", "thing2", "thing3" ]
df_b = df[df["id"].apply(lambda x: x in list_of_ids)==True]

或者我可以使用
.str.contains()
方法,但传递一个字符串,该字符串是从
列表的所有元素构建的,这些元素由管道“|”分隔,但这样做似乎并不“干净”。

生成一个示例数据帧:

n = 50
df = pd.DataFrame({
    'id': list(string.ascii_letters[:n]),
    'n': range(n)})
df.head()

Out:
    id  n
0   a   0
1   b   1
2   c   2
3   d   3
4   e   4
ids
列表中选择ID值与值匹配的值:

ids = ['a', 'd', 'x', 'A']
df[df['id'].isin(ids)]

Out:
    id  n
0   a   0
3   d   3
23  x   23
26  A   26

df[df['id'].str.isin(id列表)]
这就是我需要的。谢谢我将接受这个答案,因为您在@perl之前就已经有了它,否则我将接受perl的答案。这就是我所需要的。@junky叔叔:如果答案作为一个可接受的解决方案解决了你的问题,你可以放弃投票,还可以单击“已解决”按钮(就在向上/向下投票按钮的下方)@pyano谁先到那里有关系吗?我很乐意根据社区规则/指导原则在任何地方给予表扬。如果@panktijk决定将他们的解决方案作为答案发布,您可以决定在发布后将他们的答案更改为已接受的答案。但是,如果他们不希望将其作为答案发布,而这一个解决了您的问题,您应该接受这一个作为答案。