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决定将他们的解决方案作为答案发布,您可以决定在发布后将他们的答案更改为已接受的答案。但是,如果他们不希望将其作为答案发布,而这一个解决了您的问题,您应该接受这一个作为答案。