Pandas:如果在预定义列表中不存在,则将列值替换为空

rn0zuynd  于 2022-12-16  发布在  其他
关注(0)|答案(2)|浏览(183)

我有一个列表X,它包含一列的一组法律的值,比如说,我有一列A,我想替换df['A']中的元素(设置为空字符串),如果它们的值不在X中,我该如何在Pandas中高效地完成这个任务?
我知道有isin(),但它只是检查值是否存在并返回一系列True/False。

unguejic

unguejic1#

您可以在此处使用standard Pandas indexing

df.loc[~df.A.isin(X), 'A'] = ''

~df.A.isin(X)-将恢复df.A.isin(X)返回的布尔系列(即False-〉TrueTrue-〉False

bgtovc5b

bgtovc5b2#

您可以使用apply:

import pandas as pd

x = ['a', 'b', 'c']
data = {'foo':['a', 'a', 'q', 'p']}
df = pd.DataFrame.from_dict(data)

df_new = df['foo'].apply(lambda i: i if i in x else '')

相关问题