python - 使用 strptime() 将数据转换为 datetime 对象会产生各种错误
问题描述
我有一个如下所示的数据文件:
06/22/20-14:57:52,0,18.1436
06/22/20-14:57:53,1,18.5368
.
.
.
我需要将日期时间列转换为可读的内容,然后将其转换回用于绘图目的。为此,我使用 datetime.datetime.strptime()。这是我的代码:
def datestr2num(s):
return datetime.datetime.strptime(s.decode('ascii'),'%m/%d/%y-%H:%M:%S')
ntc = np.loadtxt('path/to/file/ntc_readings.txt', delimiter=',', converters={0:datestr2num})
print(ntc) #check
我相信,Python 应该能够区分列,因为它采用适当的格式,但如果我不包含分隔符来告诉它忽略逗号,我会得到ValueError: unconverted data remains: ,0,18.1436
. 当然,我只想转换第一列数据,这就是为什么我有converters={0:datestr2num}
. 这让我觉得它不是将数据读取为没有分隔符的三列,而是一列,这很奇怪。
当我确实包含delimiter=','
时,我得到了TypeError: float() argument must be a string or a number, not 'datetime.datetime'
。我不知道为什么,当我包含分隔符时,loadtxt 不喜欢我对 datetime.datetime 的使用。
我试过 time.strptime(),我得到错误ValueError: setting an array element with a sequence.
我想知道这是否与使用 decode() 有关,但如果我不使用它,它就'%m/%d/%y-%H:%M:%S
不起作用,即使它是正确的格式我的日期时间数据。
关于问题是什么的任何想法?
解决方案
该函数datestr2num
应返回数字,但它返回的是日期时间。
您可以按如下方式对其进行修改:
def datestr2num(s):
date = datetime.datetime.strptime(s.decode('ascii'),'%m/%d/%y-%H:%M:%S')
return date.utcnow().timestamp()
或者,您可以使用名为 pandas 的模块。您可以按如下方式使用它:
import pandas as pd
ntc = pd.read_csv('path/to/file/ntc_readings.txt')
推荐阅读
- proguard - 我收到一个错误意外包含类..同时混淆war文件
- cartopy - 设置边界后如何添加刻度标签?
- javascript - 在 React 网站中更新文本的最合适方法是什么?
- java - 属性文件值未出现在我的变量中
- arrays - PowerShell 提高阵列更新性能
- reactjs - 在 REACTjs 中选中复选框时如何隐藏段落?
- reactjs - React useMemo re-render issue
- powershell - Powershell重命名目录中的文件
- java - Jmeter:使用 While Controller 进行失败的请求重试,ThreadGroup 循环计数不起作用
- javascript - 循环遍历 HTMLCollection 时包装元素会导致问题