我想将年龄范围转换为年龄数值。我使用 def Age(x) & If 语句进行转换,但它不起作用并给出错误的结果。我附上了我所做的步骤和结果的图像。我使用的数据集是 BlackFriday。请帮我澄清错误。谢谢!
1404 次
2 回答
1
鉴于 的结果显示的内容value_counts
,这似乎是一个简单str.extract
的 a fillna
for 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 回答