Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何根据现有列中的值更改列值或在新列中创建值?_Python_Pandas - Fatal编程技术网

Python 如何根据现有列中的值更改列值或在新列中创建值?

Python 如何根据现有列中的值更改列值或在新列中创建值?,python,pandas,Python,Pandas,我是ML和数据科学的新手(最近刚从商业分析硕士毕业),在寻找数据科学/商业分析方面的职位时,我尽可能多地自学 我正在进行我的个人项目,以建立ML算法,预测客户是否会出席他们现有的约会 在初始数据分析时,我注意到我的“不出席”列包含值“是”和“否”(元数据:如果客户安排了约会并出席了约会,“不出席”列中的值为“否”;如果客户安排了约会但未出席约会,“不出席”列中的值为“是”)。对于ML算法,我需要值“Yes”变为“1”,值“No”变为“0” 我意识到有两种方法可以解决这个问题: 编写代码更改“不显

我是ML和数据科学的新手(最近刚从商业分析硕士毕业),在寻找数据科学/商业分析方面的职位时,我尽可能多地自学

我正在进行我的个人项目,以建立ML算法,预测客户是否会出席他们现有的约会

在初始数据分析时,我注意到我的“不出席”列包含值“是”和“否”(元数据:如果客户安排了约会并出席了约会,“不出席”列中的值为“否”;如果客户安排了约会但未出席约会,“不出席”列中的值为“是”)。对于ML算法,我需要值“Yes”变为“1”,值“No”变为“0”

我意识到有两种方法可以解决这个问题:

  • 编写代码更改“不显示”列的值
  • 创建一个新的“结果”列,其值将取决于“不显示”中的值
  • 我尝试为这两种情况编写代码,但仍然会出现不同的错误。下面是我尝试的两种方法,两种方法都不起作用。我提前感谢你的帮助

    1.

    if my_df["No-show"] == "Yes":
        my_df["No-show"] == 1
    elif my_df["Outcome"] == "No":
        my_df["No-show"] == 0
    else:
        print("Something went wrong")
    
    Error: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
    
    2.1

    my_df["Outcome"] = 0
    
    if my_df["No-show"] == "Yes":
        my_df["Outcome"] == 1
    elif my_df["No-show"] == "No":
        my_df["Outcome"] == 0
    else:
        print("Something went wrong")
    
    Error: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
    
    2.2

    my_df["Outcome"] = 0
    
    for val in my_df.iterrows():
        if my_df["No-show"] == "Yes":
            my_df["Outcome"] == 1
        elif my_df["No-show"] == "No":
            my_df["Outcome"] == 0
        else:
            print("Something went wrong")
    
    Error: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
    

    感谢您的帮助,并祝贺我关于StackOverflow的第一个问题!期待回馈社会!:)

    这回答了你的问题吗?你看过吗?@Arsik36一个问题是你没有在for循环中使用
    val
    。还有一种更简洁的方法:
    my_-df['Outcome']=(my_-df['No-show']='Yes')。另一方面,使用变量
    “No-show”
    会让人困惑。另外,为什么要使用0/1而不是实际布尔值?
    my_-df['No-show']='Yes'
    将返回一个
    pandas.Series
    ,其长度(行数)与
    my_-df
    相同,根据
    No-show
    列是否与给定字符串匹配,每行的
    True
    False
    (本例中为
    'Yes'
    ). 使用
    astype()
    方法将这些布尔值转换为整数(
    True
    变为
    1
    False
    变为
    0
    )。这是通过通常的
    =
    操作符分配给
    my_df['output']
    ,从而在数据帧中创建新列。正如@AMC所建议的,您最好阅读熊猫文档——它非常清晰简洁。