2

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

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

4

2 回答 2

1

鉴于 的结果显示的内容value_counts,这似乎是一个简单str.extract的 a fillnafor age of 55+will do:

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

让我们考虑以下示例:

df = pd.DataFrame({'Age':['26-35','36-45', '55+']})

    Age
0  26-35
1  36-45
2    55+

df.Age.str.extract(r'(?<=-)(\d+)').fillna(56).rename(columns={0:'Age'})

   Age
0  35
1  45
2  56
于 2019-03-14T09:57:11.930 回答
0

一个简单的函数来修改 age_range 以表示:

这是我们的年龄范围

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
于 2019-10-01T06:34:15.977 回答