根据集合中的成员替换 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
我想替换 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