如何在pandas中将dataframe列中的天数格式值转换为整数?
错误根因说明
- 你的
1st Year Score列存储的是字符串格式的时间间隔值,不是datetime类型也不是timedelta类型,所以直接调用.dt访问器会报错。 - 你使用
pd.to_datetime转换失败,是因为该方法用于转换时间点格式的数据,而你存储的是时间间隔,类型不匹配,所以所有值都被转为空值NaT。 - 你之前写的
.dt.days()多了括号,days是属性不是调用方法,不需要加括号。
可行解决方案
方案1:转换为timedelta类型(推荐,更规范)
直接用pandas专门处理时间间隔的pd.to_timedelta方法转换,再提取天数即可:
data['1st Year Score'] = pd.to_timedelta(data['1st Year Score']).dt.days
方案2:字符串切割(适合格式完全固定的场景)
因为所有行格式都是「天数数字 + 空格 + days + 其余时间」,可以直接按空格切割取第一个元素转为整数:
data['1st Year Score'] = data['1st Year Score'].str.split().str[0].astype('int')
两种方案运行后都可以得到你需要的仅保留整数天数的列,数据类型为整数。
内容的提问来源于stack exchange,提问作者Guitarman045
相关产品推荐
相关产品推荐

