我正在尝试执行以下代码:
df.loc[df['Column'] in list]=1
df.loc[df['Column'] not in list]=2
但我有一个着名的错误
系列的真值是模棱两可的。使用a.empty,a.bool(),a.item(),a.any()或a.all()。
因此,根据我对此错误的理解,我已经得到了它与逻辑相关联。我想知道的是,是否有一个特定的拼写错误来做我要对列表做的事情,或者我必须像那样扩展我的整个列表(在我的情况下会非常难看和长):
df.loc[df[('Column']=='a') & (df['Column']=='b')]=1
df.loc[df[('Column']!='a') & (df['Column']!='b')]=2
答案 0 :(得分:2)
我使用np.where
。但是,您需要一个列名。
df['new_column'] = np.where(df['Column'].isin(lst), 1, 2)
考虑列表lst
和数据框df
lst = [1, 2, 3]
df = pd.DataFrame(dict(Column=[0, 1, 2, 3, 4]))
然后
df['new_column'] = np.where(df['Column'].isin(lst), 1, 2)
print(df)
Column new_column
0 0 2
1 1 1
2 2 1
3 3 1
4 4 2
答案 1 :(得分:1)
您正在寻找的功能是
df.loc[df['Column'].isin(list)] = 1