如何将Pandas DataFrame中"XX years XX months"格式的object列转为浮点值?
解决Pandas中"XX years XX months"格式列转浮点类型的问题
直接用astype('float')报错是因为该列是包含文字的字符串,Pandas无法直接将非纯数字的字符串转换为浮点数。需要先提取字符串中的年、月数值,再计算为统一的浮点值,步骤如下:
提取年和月的数字:使用正则表达式从字符串中分离出年、月的数值,生成临时列
df_Jan[['years', 'months']] = df_Jan['remaining_lease'].str.extract(r'(\d+) years (\d+) months', expand=True)转换临时列为数值类型:将提取出的字符串数字转为浮点型
df_Jan['years'] = df_Jan['years'].astype(float) df_Jan['months'] = df_Jan['months'].astype(float)计算浮点型的剩余租期:根据需求选择以年或月为单位计算
- 以年为单位:
df_Jan['remaining_lease_float'] = df_Jan['years'] + df_Jan['months'] / 12 - 以月为单位:
df_Jan['remaining_lease_float'] = df_Jan['years'] * 12 + df_Jan['months']
- 以年为单位:
可选清理:如果不需要临时的
years和months列,可删除df_Jan = df_Jan.drop(['years', 'months'], axis=1)
内容的提问来源于stack exchange,提问作者Nathan Leow
相关产品推荐
相关产品推荐

