我有一个pandas数据帧和一个包含特定值的列表.
我想检查列标题下的每个列值是否包含在列表中,如果找到其他
值,则要分配1.在下面的示例中,列标题v下的列值将根据列表中的值进行测试l .
l=['a','e']
df = pd.DataFrame({'id':[1,2,3,4,5],'v' : ['a','b','c','d','e']})
df
id v
1 a
2 b
3 c
4 d
5 e
Run Code Online (Sandbox Code Playgroud)
结果,我期待的是,
id v
1 1
2 0
3 0
4 0
5 1
Run Code Online (Sandbox Code Playgroud)
我试过用
df['v'] = df['v'].apply(lambda x: x.isin(l))
Run Code Online (Sandbox Code Playgroud)
但无法继续如何分配值1和0
df.v.isin(l) 会给你一个布尔系列:
0 True
1 False
2 False
3 False
4 True
Name: v, dtype: bool
Run Code Online (Sandbox Code Playgroud)
您可以使用astype以下方法将其转换为零和一:
df.v.isin(l).astype(int)
0 1
1 0
2 0
3 0
4 1
Name: v, dtype: int32
Run Code Online (Sandbox Code Playgroud)