在Python中基于anoth的内容添加一个新列

2024-09-26 22:50:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个国家名称的数据框架,我想添加一个列,表明它是否是穆斯林禁令的一部分。所以,理想情况下,我希望:

Country Name          Ban
Indonesia             non_muslim_ban
Iran, Islamic Rep.    muslim_ban
Iraq                  non_muslim_ban
Ireland               non_muslim_ban
Libya                 muslim_ban
Liechtenstein         non_muslim_ban
Somalia               muslim_ban
South Africa          non_muslim_ban
Sudan                 muslim_ban
Syrian Arab Republic  muslim_ban
West Bank and Gaza    non_muslim_ban
Yemen, Rep.           muslim_ban
Zambia                non_muslim_ban
Zimbabwe              non_muslim_ban

我尝试了此函数,但出现了一个错误:

def muslim_ban(Country_Name):
    if df['Country Name'] in ['Iran', 'Libya', 'Somalia', 'Sudan', 'Syria', 'Yemen']:
        return 'muslim_ban'
    elif df['Country Name'] not in  ['Iran', 'Libya', 'Somalia', 'Sudan', 'Syria', 'Yemen']:
        return 'non_muslim_ban'
`df['muslim_ban'] = df['Country Name'].apply(muslim_ban)


ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

有人能帮忙吗?你知道吗

更新以包含修订的代码


Tags: nameindfreturncountryirannonrep
3条回答

以下是一些可能有用的东西。你知道吗

  1. 将国家名称更改为CountryName
  2. 使用“==”进行比较,而不是赋值运算符“=”。你知道吗
  3. 你不需要elif,因为你可以使用else返回'non-ban'
  4. 在代码的最后一行,行首有一个引号。你知道吗

希望这有帮助!你知道吗

您确定可以按如下方式拆分函数参数: Country Name?也许这是你的语法错误。顺便说一句,语法错误应该显示您遇到错误的行。你知道吗

你的代码很少有问题。你知道吗

首先,在u ban的函数定义中使用空格分隔的变量名。因此,将“Country Name”替换为类似“Country\u Name”

其次,可以将多个字符串放入列表中的if条件中,然后使用innot in运算符检查是否存在。你知道吗

def muslim_ban(Country_Name):
    if Country_Name in ['Iran', 'Libya', 'Somalia', 'Sudan', 'Syria', 'Yemen']:
        return 'muslim_ban'
    elif Country_Name not in  ['Iran', 'Libya', 'Somalia', 'Sudan', 'Syria', 'Yemen']:
        return 'non_muslim_ban'

df['muslim_ban'] = df['Country_Name'].apply(muslim_ban)

相关问题 更多 >

    热门问题