【问题标题】:Create a new column value based on another column content from a list根据列表中的另一列内容创建新列值
【发布时间】:2020-04-28 08:50:49
【问题描述】:

我正在尝试根据另一个变量中的非洲国家名称创建一个名为“区域”的新变量。我有一个所有非洲国家的列表(此处显示两个作为示例),但我遇到了错误。



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


df['region'] = ''

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

我明白了:

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

【问题讨论】:

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

标签: python pandas list dataframe apply


【解决方案1】:

我建议你看看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')

【讨论】:

    【解决方案2】:

    你的条件不对。

    正确的方式是

    if element in list_of_elements:
    

    因此,更改函数 africa 会导致:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-02
      • 2020-04-16
      • 2022-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      相关资源
      最近更新 更多