使用strtime()将数据转换为datetime对象会产生各种错误

2024-05-29 10:13:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个如下所示的数据文件:

06/22/20-14:57:52,0,18.1436
06/22/20-14:57:53,1,18.5368
.
.
.

我需要将日期时间列转换为可读的内容,然后将其转换回绘图目的。为此,我使用datetime.datetime.strtime()。这是我的密码:

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.strtime(),我得到了错误ValueError: setting an array element with a sequence.。我想知道这是否与使用decode()有关,但如果我不使用它,'%m/%d/%y-%H:%M:%S不起作用,即使它是我的日期时间数据的正确格式

你有没有想过问题出在哪里


Tags: 数据内容datetime数据文件格式时间decodedelimiter
1条回答
网友
1楼 · 发布于 2024-05-29 10:13:03

函数datestr2num应该返回number,但它返回的是datetime

您可以按如下方式对其进行修改:

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')

相关问题 更多 >

    热门问题