Python 新列中的值为1/0

Python 新列中的值为1/0,python,pandas,Python,Pandas,我有一个数据框,其中有一列是我感兴趣的: Col1 code goal python detail 我想创建一个新列,Col2的值为1或0,具体取决于Col1中行的值;具体而言: 如果一行在列表my_list=['goal','detail','objective']中有一个值,则分配1 如果没有,则指定0 我的输出是: Col1 Col2 code 0 goal 1 python 0 detail 1 我试过了 # s

我有一个数据框,其中有一列是我感兴趣的:

Col1   
code 
goal
python
detail
我想创建一个新列,Col2的值为1或0,具体取决于Col1中行的值;具体而言:

  • 如果一行在列表
    my_list=['goal','detail','objective']
    中有一个值,则分配1
  • 如果没有,则指定0
我的输出是:

Col1       Col2
code        0
goal        1
python      0
detail      1
我试过了

# set default value
df['Col2'] = 0

# update according to conditions
df.loc[df['Col1'].str.contains('goal'), 'Col2'] = 1
df.loc[df['Col1'].str.contains('detail'), 'Col2'] = 1
df.loc[df['Col1'].str.contains('objective'), 'Col2'] = 1
但这似乎部分是错误的。 我认为我应该在<代码> MyObList中使用Apple并考虑Word x,而不是手工操作(在列表中有很多、多个值的情况下会很困难)。
我希望你能帮助我。

使用
np.where
+
Series.isin

import numpy as np

my_list=['goal', 'detail', 'objective']

df['Col2'] = np.where(df.Col1.isin(my_list), 1, 0)
或如@Ch3steR所述

df['Col2'] = df.Col1.isin(my_list).astype('int')

那么:

将熊猫作为pd导入
df=pd.DataFrame(数据=['code'、'goal'、'python'、'detail'],列=['Col1'])
mylist=['goal','detail','objective']
df['Col2']=df['Col1'].apply(如果mylist中的单元格为0,则lambda单元格为1)
给予


谢谢你,苏珊特!我很确定有更好的方法:)我会尽快给你的答案打分。
df['Col2']=df.Col1.isin(我的列表)。astype('int')
?谢谢@ch3ster很高兴能提供帮助@LucaDiMauro@Sushanth来自
C
1是
True
而0是
False
hehe…很好的答案tho;)谢谢你@pfuhlert
     Col1  Col2
0   code      0
1    goal     1
2  python     0
3  detail     1
     Col1  Col2
0    code     0
1    goal     1
2  python     0
3  detail     1