【问题标题】:convert data frame datatime string to float in python /Pandas将数据框日期时间字符串转换为在 python /Pandas 中浮动
【发布时间】:2019-08-03 01:13:56
【问题描述】:

我有这个大约 100 万条记录的大数据文件。当我用熊猫阅读它时,它不允许我将日期时间字符串值转换为浮点数。

我尝试将其转换为 numpy 数组和 float32,但它没有让我做第二个

data = pd.read_csv('s3://sagemaker-us-east-1-881385135648/data/all_data.csv', header= None, encoding='utf8', low_memory=False)
type(data)

ValueError:无法将字符串转换为浮点数:'2018-06-27 15:31:54.053'

【问题讨论】:

  • 为什么要将2018-06-27 15:31:54.053 转换为浮点数?您期望的浮点值是多少?
  • 如果您想要纪元时间的时间戳,您需要将它们转换为某种日期数据类型,以便 numpy 或 pandas 知道如何处理它。试试pd.Timestamp('2018-06-27 15:31:54.053').value
  • 但是我如何为整个专栏做到这一点?

标签: python string pandas datetime data-conversion


【解决方案1】:
import datetime
import time

timeString= '2018-06-27 15:31:54.053'

dateTime1 = datetime.datetime.strptime(timeString, '%Y-%m-%d %H:%M:%S.%f')

time_float = float(time.mktime(dateTime1.timetuple()))

不知道这是否是最好的解决方案,但这是我的一个项目中的解决方案

【讨论】:

  • 这是数据的样子:2017-06-26 22:37:00 2017-06-26 22:43:26.530 2017-06-28 12:27:42.770 0 0 0 0 0 0 2019-05-23 19:22:07.657 2019-05-24 12:15:40.233 2019-05-23 20:59:31.223 2019-05-24 12:02:47.793 0 0 0 0 0 2 2017- 06-25 22:59:00 2017-06-26 14:21:25.663 2017-06-26 14:21:25.663 0 0 2017-06-26 14:45:34.910 2017-07-12 18:43:20.877 0 0 0 0 0 0 0 0 0 2017-06-26 15:06:00 2017-06-26 22:22:00 3 2017-06-26 00:42:00 2017-07-08 12:10:56.713 2017-07-08 12:10:56.713 0 0 2017-06-26 17:29:13.807 2017-07-13 18:50:38.357 所有列都是这样。
  • 这里是错误:ValueError: could not convert string to float: '2018-06-27 15:31:54.053'
  • @vanetoj 试试这个帖子? stackoverflow.com/questions/27276816/…
  • 好吧,我做到了:data=data.values data=data.reshape(-1,1) data.shape 然后 this:data=np.datetime64() 所以它起作用了,但现在我失望了不同的错误。好吧,我读取文件的方式毕竟是这样的: data = pd.read_csv('s3://awscoxautolabs59-eu-central-1-logs-coxautomotive/all_data.csv', encoding='utf8',parse_dates =True, low_memory=False,na_filter=True)
猜你喜欢
  • 2014-12-18
  • 1970-01-01
  • 1970-01-01
  • 2020-05-29
  • 2015-03-24
  • 1970-01-01
  • 2015-01-22
  • 1970-01-01
  • 2022-07-04
相关资源
最近更新 更多