Python 3.x Python“for”循环将所有数据范围错误地标记为一个标签

Python 3.x Python“for”循环将所有数据范围错误地标记为一个标签,python-3.x,loops,Python 3.x,Loops,在Python3中,我有一个称为customer的数据帧和一个称为Age的整数变量,表示客户的年龄。我想创建定制的年龄箱,所以我使用了一个for循环,但当我运行它时,它将所有东西都标记为“25到45”-尽管事实上,浏览年龄数据可以显示广泛的年龄范围。我试着修改措辞,但毫无帮助。有什么想法吗?这就是我所做的 首先,我创建了变量AGEGOUP,它是Age的克隆,用标签替换循环中的标签,我这样做是因为它不喜欢在循环中从头开始创建标签变量。也许这就是让我绊倒的原因,但我找不到其他方法,我很小心地转换成s

在Python3中,我有一个称为customer的数据帧和一个称为Age的整数变量,表示客户的年龄。我想创建定制的年龄箱,所以我使用了一个for循环,但当我运行它时,它将所有东西都标记为“25到45”-尽管事实上,浏览年龄数据可以显示广泛的年龄范围。我试着修改措辞,但毫无帮助。有什么想法吗?这就是我所做的

首先,我创建了变量AGEGOUP,它是Age的克隆,用标签替换循环中的标签,我这样做是因为它不喜欢在循环中从头开始创建标签变量。也许这就是让我绊倒的原因,但我找不到其他方法,我很小心地转换成str

客户['AgeGroup']=strustomer.Age

循环是:

for a in customer['Age']:
    if a < 25:
        customer['AgeGroup'] = "Under 25"
    elif 25 <= a <= 45:
        customer['AgeGroup'] = "Between 25 and 45 (45 incuded)"
    elif 46 < a <= 55:
        customer['AgeGroup'] = "45 and 55 (55 included)"
    elif a > 55:
        customer['AgeGroup'] = "Over 55"
当我在循环后查看年龄组的值计数时,它们都显示为25到45,令人费解的是,数据类型被列为int64。我一定错过了什么大事


任何帮助都将不胜感激。谢谢

我认为您的意思是迭代客户,而不是“客户:

对于customers.iterrows中的客户: a=客户[“年龄”] 如果a<25: 客户[‘年龄组]]=25岁以下
elif 25因此,您只循环了customer['Age']值,而不是实际的customer值,因此在循环期间您没有更新customer对象的权限。试试这个:

for customer in customers:
    a = customer['Age']
    if a < 25:
        customer['AgeGroup'] = "Under 25"
    elif 25 <= a <= 45:
        customer['AgeGroup'] = "Between 25 and 45 (45 incuded)"
    elif 46 < a <= 55:
        customer['AgeGroup'] = "45 and 55 (55 included)"
    elif a > 55:
        customer['AgeGroup'] = "Over 55"

对不起,我的df实际上叫客户,我的问题打错了。我尝试了您的代码,但它返回了TypeError:元组索引必须是整数或切片,而不是strHi,您是否建议我使用循环中的'for'元素并运行它?当我尝试此操作时,它返回一个错误,即序列的真值不明确。使用a.empty、a.bool、a.item、a.any或a.all.no抱歉,这在for循环中-我会将代码更新为reflect,我很确定您不能在Python中执行a