年龄范围到年龄数值(python)

年龄范围到年龄数值(python),python,Python,我想将年龄范围转换为年龄数值。我使用defage(x)&If语句进行转换,但它不起作用,并且给出了错误的结果。 我附上了我所做的步骤和结果的图像。 我使用的数据集是BlackFriday。 请帮我澄清错误。 谢谢大家! 根据值\u计数的结果显示的情况,似乎一个简单的55岁以上的a可以: df.Age.str.extract(r'(?<=-)(\d+)').fillna(56) df.Age.str.extract(r'(?一个简单的函数,用于修改年龄范围以表示: 这是我们的年龄范围

我想将年龄范围转换为年龄数值。我使用defage(x)&If语句进行转换,但它不起作用,并且给出了错误的结果。 我附上了我所做的步骤和结果的图像。 我使用的数据集是BlackFriday。 请帮我澄清错误。 谢谢大家!


根据
值\u计数的结果显示的情况,似乎一个简单的
55岁以上的a可以:

df.Age.str.extract(r'(?<=-)(\d+)').fillna(56)

df.Age.str.extract(r'(?一个简单的函数,用于修改年龄范围以表示:

这是我们的年龄范围

temp_df['age_range'].unique()

array([70, '18-25', '26-35', '36-45', '46-55', '56-70'], dtype=object)
修改年龄的函数

def mod_age(df):
for i in range(df.shape[0]):
    if(df.loc[i,'age_range']==70):
        df.loc[i,'age_range']=70
    elif(df.loc[i,'age_range']=='18-25'):
        df.loc[i,'age_range']=(18+25)//2
    elif(df.loc[i,'age_range']=='26-35'):
        df.loc[i,'age_range']=(26+35)//2
    elif(df.loc[i,'age_range']=='36-45'):
        df.loc[i,'age_range']=(36+45)//2
    elif(df.loc[i,'age_range']=='46-55'):
        df.loc[i,'age_range']=(46+55)//2
    elif(df.loc[i,'age_range']=='56-70'):
        df.loc[i,'age_range']=(56+75)//2

 age_range  family_size marital_status  sum
2   70         2        Single          4
25  40         4        Single          2
5   21         2        Married         4
32  50         3        Single          3
13  30         2        Single          5

请将您的相关代码和数据以纯文本形式粘贴到问题中,而不是使用捕获。链接可能会中断,图像也不是很方便。如何进行升级?代码仅在图像中,如果数据干净且正确,转换功能应该可以工作。请给出一个可复制的示例。中给出的规则可帮助其他人查看ide确定您的实际问题并发布相关解决方案,而不是猜测和试图解决不同的问题。这是正确的,但对于您的数据帧,
df.Age.transform(Age)
给出了相同的结果…
transform(Age)
?如果我错了,请纠正我,但是
transform
需要一个聚合函数。我不确定你想做什么@SergeBallesta使用一个简单的1-1转换函数。而
df.Age
是一个
系列
。试试这个:
def Age(a):mapping={'0-17''26-35':35,'36-45''46-50':50}返回mapping.get(a,56)
df.Age.transform(Age)
Ah您是指通过自定义函数进行映射…当然,这是另一种方法。我使用这种方法是因为它涉及的键入较少,但它接近OP显示的函数。
def mod_age(df):
for i in range(df.shape[0]):
    if(df.loc[i,'age_range']==70):
        df.loc[i,'age_range']=70
    elif(df.loc[i,'age_range']=='18-25'):
        df.loc[i,'age_range']=(18+25)//2
    elif(df.loc[i,'age_range']=='26-35'):
        df.loc[i,'age_range']=(26+35)//2
    elif(df.loc[i,'age_range']=='36-45'):
        df.loc[i,'age_range']=(36+45)//2
    elif(df.loc[i,'age_range']=='46-55'):
        df.loc[i,'age_range']=(46+55)//2
    elif(df.loc[i,'age_range']=='56-70'):
        df.loc[i,'age_range']=(56+75)//2

 age_range  family_size marital_status  sum
2   70         2        Single          4
25  40         4        Single          2
5   21         2        Married         4
32  50         3        Single          3
13  30         2        Single          5