我有一个列表X,它包含一列的一组法律的值,比如说,我有一列A,我想替换df['A']中的元素(设置为空字符串),如果它们的值不在X中,我该如何在Pandas中高效地完成这个任务?我知道有isin(),但它只是检查值是否存在并返回一系列True/False。
X
A
df['A']
isin()
unguejic1#
您可以在此处使用standard Pandas indexing:
df.loc[~df.A.isin(X), 'A'] = ''
~df.A.isin(X)-将恢复df.A.isin(X)返回的布尔系列(即False-〉True和True-〉False)
~df.A.isin(X)
False
True
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 '')
2条答案
按热度按时间unguejic1#
您可以在此处使用standard Pandas indexing:
~df.A.isin(X)
-将恢复df.A.isin(X)返回的布尔系列(即False
-〉True
和True
-〉False
)bgtovc5b2#
您可以使用apply: