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