我有这个数据框,其中有一列是我感兴趣的: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

牧羊人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
添加回答
举报
0/150
提交
取消