根据列表中的另一列内容创建新的列值

时间:2020-01-10 17:12:52

标签: python pandas list dataframe apply

我正在尝试根据另一个变量中非洲国家的名称创建一个名为“ region”的新变量。我列出了所有非洲国家的清单(此处以两个国家为例),但是遇到错误。



def africa(x):
  if africalist in x:
    return 'African region'
  else:
    return 'Not African region'


df['region'] = ''

df.region= df.countries.apply(africa)

我得到了:

'in'需要字符串作为左操作数,而不是列表

2 个答案:

答案 0 :(得分:2)

我建议您看到When should I want to use apply

您可以使用:

df['region'] = df['countries'].isin(africalist).map({True:'African region',
                                                     False:'Not African region'})

df['region'] = np.where(df['countries'].isin(africalist),
                        'African region',
                        'Not African region')

答案 1 :(得分:0)

您的情况不正确。

正确的方式是

if element in list_of_elements:

因此,更改功能africa会导致:

def africa(x):
  if x in africalist:
    return 'African region'
  else:
    return 'Not African region'