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中行的值;具体而言:
- 如果一行在列表
中有一个值,则分配1李>my_list=['goal','detail','objective']
- 如果没有,则指定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