为了账号安全,请及时绑定邮箱和手机立即绑定

大熊猫中值为 1/0 的新列

大熊猫中值为 1/0 的新列

慕仙森 2023-04-25 16:40:13
我有这个数据框,其中有一列是我感兴趣的:Col1   code goalpythondetail我想创建一个新列,Col2 的值为 1 或 0,具体取决于 Col1 中行的值;具体来说:如果一行在列表中有值my_list=['goal', 'detail', 'objective'],则赋值 1;如果没有,则分配 0。我的输出是:Col1       Col2code        0goal        1python      0detail      1我试过# set default valuedf['Col2'] = 0# update according to conditionsdf.loc[df['Col1'].str.contains('goal'), 'Col2'] = 1df.loc[df['Col1'].str.contains('detail'), 'Col2'] = 1df.loc[df['Col1'].str.contains('objective'), 'Col2'] = 1但这似乎是部分错误的。我认为我应该使用 apply 并考虑单词 x 而my_list不是手动执行(如果列表中有很多很多值,这将很困难)。我希望你可以帮助我。
查看完整描述

2 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

使用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')

     Col1  Col2

0   code      0

1    goal     1

2  python     0

3  detail     1


查看完整回答
反对 回复 2023-04-25
?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

如何申请:

import pandas as pd



df = pd.DataFrame(data = ['code', 'goal', 'python', 'detail'], columns = ['Col1'])


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


df['Col2'] = df['Col1'].apply(lambda cell: 1 if cell in mylist else 0)


     Col1  Col2

0    code     0

1    goal     1

2  python     0

3  detail     1


查看完整回答
反对 回复 2023-04-25
  • 2 回答
  • 0 关注
  • 110 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信