【发布时间】:2018-08-29 03:34:24
【问题描述】:
我刚开始用python编码,我的一般编码技能相当生疏:(所以请耐心等待
我有一个熊猫数据框:
它有大约 3m 行。有 3 种年龄单位:Y、D、W 表示年、日和周。任何 1 岁以上的人的年龄单位都是 Y,我想要的第一个分组是
我想创建一个新列 AgeRange 并填充以下范围:
- 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?我一定是弄错了,但是这样做的正确方法是什么?
因此,在收到该错误后,我什至不确定传入数据框的方法是否也会引发错误。我猜可能是的。在这种情况下 - 我该如何让它工作?
我希望学习最好的方法,但对我来说最好的方法之一就是保持简单,即使这意味着只需几个步骤即可完成...
【问题讨论】:
-
@jpp 下面给出了很好的答案 - 还考虑到您的无效语法 AND 应该是小写字母
and也在 if 语句条件之后您需要使用:所以它应该是if complete.Age > 1 and complete.Age < 18: return '2-18'跨度>
标签: python python-2.7 pandas numpy dataframe