如何检查字符串列表中的数据框列值?

时间:2019-03-05 17:52:59

标签: python pandas

我有一个数据框df,并希望从中创建一个新的数据框df_b,但只采用行列df['id']的值在我的列表数组{{ 1}}。

list_of_idsdf['id']都包含字符串值。

我考虑过使用正则表达式,但是由于list_of_ids的长度大于20个元素,因此正则表达式将非常庞大,因此在list_of_ids上需要一个生成器,但是我不知道如何应用那个。

我在想类似的东西:

list_of_ids

或者我可以使用list_of_ids = ["thing1", "thing2", "thing3" ] df_b = df[df["id"].apply(lambda x: x in list_of_ids)==True] 方法,但是传递一个由.str.contains()的所有元素构建的字符串,这些元素之间用竖线'|'分隔,但是这样做似乎不是“干净”。

1 个答案:

答案 0 :(得分:1)

生成示例DataFrame:

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