我有一个Pandas数据框:
它大约有3百万行。有3种age_units
:Y,D,W代表年,天和周。任何超过1岁的个体都有一个年龄单位为Y,我的第一组是<2岁,所以我要测试的年龄单位只有Y...
我想创建一个新列AgeRange
并填充以下范围:
- <2
- 2 - 18
- 18 - 35
- 35 - 65
- 65+
所以我写了一个函数
def agerange(values):
for i in values:
if complete.Age_units == 'Y':
if complete.Age > 1 AND < 18 return '2-18'
elif complete.Age > 17 AND < 35 return '18-35'
elif complete.Age > 34 AND < 65 return '35-65'
elif complete.Age > 64 return '65+'
else return '< 2'
我原以为��果将整个数据框传入,就能得到所需的内容,然后可以像这样创建我想要的列:
agedetails['age_range'] = ageRange(agedetails)
但是当我尝试运行第一段代码来创建函数时,出现了以下错误:
File "<ipython-input-124-cf39c7ce66d9>", line 4
if complete.Age > 1 AND complete.Age < 18 return '2-18'
^
SyntaxError: invalid syntax
显然它不接受AND - 但是我记得在课上听说过可以这样使用AND?我一定是弄错了,那么正确的方法是什么呢?
因此,在遇到错误后,我甚至不确定传入数据框的方法是否会引发错误。我猜可能是肯定的。如果是这样 - 那我该怎么做才能使它也起作用呢?
我想学习最好的方法,但对我来说,最好的方法之一就是保持简单,即使这意味着要分几个步骤进行...
and
。在if语句条件后,需要使用冒号“:”,所以应该写成if complete.Age > 1 and complete.Age < 18: return '2-18'
。 - gyx-hh