根据集合中的成员替换 pandas 数据框中的值

Replacing values in a pandas dataframe based on a membership in a set

我想替换 pandas 数据框中的值(如果它们包含在一个集合中)。这是一个小例子:

lset = frozenset((0,1))
data = {'col1': [3, 2, 1, 0]}
df = pd.DataFrame.from_dict(data)

我希望 lset 中包含的 col1 的所有值都替换为 -5。结果相当于:

data = {'col1': [3, 2, -5, -5]}
df = pd.DataFrame.from_dict(data)

我试过了

df.loc[df['col1'] in lset, 'col1'] = -5

但我收到 TypeError: unhashable type: 'Series'

检查isin

df.loc[df['col1'].isin(lset), 'col1'] = -5
df
Out[180]: 
   col1
0     3
1     2
2    -5
3    -5

在条件中使用 isin np.where

df['col2']=np.where(df['col1'].isin(lset),-5,df['col1'])



   col1  col2
0     3     3
1     2     2
2     1    -5
3     0    -5