Python If Else条件创建新列
我有一个关于健身活动的数据集。我有如下数据:Python If Else条件创建新列,python,if-statement,conditional-statements,Python,If Statement,Conditional Statements,我有一个关于健身活动的数据集。我有如下数据: VisitNum Date Trainer CaloriesBurned 1 01/04/20 Mike 500 2 01/06/20 Cindy 600 3 01/07/20 Lucy 550 4 01/10/20 Mike 650 5 01/15/20 Lucy 625
VisitNum Date Trainer CaloriesBurned
1 01/04/20 Mike 500
2 01/06/20 Cindy 600
3 01/07/20 Lucy 550
4 01/10/20 Mike 650
5 01/15/20 Lucy 625
6 01/16/20 Lucy 575
7 01/19/20 Mike 525
8 01/21/20 Rebecca 592
9 01/26/20 Lucy 603
10 01/29/20 Mike 559
我的目标是比较训练师消耗的卡路里。这只是数据的快照,有超过30个不同的培训师。我不想在图中包括所有培训师,所以我想创建一个新变量“Trainer2”,它查看每个培训师的访问次数,如果该数字小于3,那么培训师的新值将是“其他”
这是我迄今为止的尝试:
if data["Trainer"].value_counts() >= 3:
data["Trainer2"]==data.Trainer
else:
data["Trainer2"]=="Other"
我运行此代码时出错,我不确定我做错了什么:
ValueError: The truth value of a Series is ambiguous. Use a.empty,
a.bool(), a.item(), a.any() or a.all().
我想出来了:
data["TrainerCounts"]=data["Trainer"].map(data['Trainer'].value_counts())
def f(row):
if row['TrainerCounts'] >= 3:
Trainer2 = row['Trainer']
elif row['TrainerCounts'] < 3:
Trainer2 = "Other"
return Trainer2
data['Trainer2'] = data.apply(f, axis=1)
data[“TrainerCounts”]=data[“Trainer”].map(data['Trainer'].value_counts())
def f(世界其他地区):
如果行['TrainerCounts']>=3:
培训师2=世界其他地区[“培训师”]
elif行['TrainerCounts']<3:
Trainer2=“其他”
返程列车员2
数据['Trainer2']=数据。应用(f,轴=1)
在else:statement中,您有=
而不是=
。编辑:您应该将第一个if语句更改为使用作为赋值运算符的单个=
,而不是作为比较运算符的双=
。现在,您要做的就是检查数据[“Trainer2”]
是否等于某个值,并且不改变其值all@chung使用=
而不是=
会将该表达式计算为布尔值,然后丢弃该值。当然,这可能不是他想要的,但不会引发异常。这方面的“Trainer”
是什么?它是否是某个特定培训师的占位符,那么,您的代码是否会改为“Lucy”?运行此代码时,我收到一个错误,请显示错误。值错误:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。