【发布时间】:2019-05-22 10:19:15
【问题描述】:
我在将pandas dataframe 中的datetime 列之一转换为int. 时遇到问题我的代码是:
df['datetime_column'].astype(np.int64)
我得到的错误是:
以 10 为基数的 int() 的无效文字:'2018-02-25 09:31:15'
我对正在发生的事情一无所知,因为我的其他一些 datetime 列的转换工作正常。可以转换为int 的日期范围是否存在问题?
【问题讨论】:
-
你希望 '2018-02-25 09:31:15' 转换成什么整数?
-
在我看来,这些值也超出了范围。但是当我尝试将它们转换为 'float' 时,出现以下错误:could not convert string to float: '2018-02-15 14:28:08' 我想我之前忘记将列转换为 'datetime'将其转换为“int”。我将代码更新为:'pd.to_datetime(df['datetime_column']).astype(np.int64)' 并且转换工作正常。
-
为什么要通过强制转换将 datetime 转换为 int?你不想用 df['date_time'].map(dt.datetime.toordinal) 代替吗?
-
非常感谢您的建议。我正在构建一个决策树模型,需要从 datetime 字段中提取一些特征。我已经提取了月、年、日、星期几、一天中的小时、周末指示器、与当前日期的偏移量等。我只是通过添加新功能进行试验,因此只需通过转换进行转换。顺便说一句,我猜 datetime.toordinal 和当前日期的偏移量应该是相关的?
标签: pandas dataframe python pandas datetime dataframe type-conversion