解析数据帧日期时,时间戳“2024-05-10T00:00:00Z”会引发格式“%Y-%m-%dT%H:%M:SZ”错误

问题描述 投票:0回答:1

我只是尝试加载一些 .txt 文件,其中包含日期和时间列,如下图所示。它只有四列,以空格分隔,而且相当简单。时间列的值如“2024-05-10T00:00:00Z”、“2024-05-10T00:01:00Z”等,逐分钟增加。

这些时间戳的格式似乎是四位数的年份、两位数的月份和日(用连字符分隔)、T 分隔符、两位数的小时、分钟和秒(全部用冒号分隔)和 Z。我会假设这个格式看起来像 YYYY-mm-ddTHH:MM:SSZ,所以我们将其写为 '%Y-%m-%dT%H:%M:%SZ'

这是我用来执行此操作的代码:

import os
import pandas as pd

magnetometer = {}  # Dict
directory = os.path.dirname(__file__)

for filename in os.listdir(directory):
    if filename.endswith('.txt'):
        df = pd.read_csv(os.path.join(directory, filename), delim_whitespace=True, header=0)  
        df['Time'] = pd.to_datetime('Time', format='%Y-%m-%dT%H:%M:SZ')  
        df_name = os.path.splitext(filename)[0] 
        magnetometer[df_name] = df

这会引发

ValueError: time data "Time" doesn't match format "%Y-%m-%dT%H:%M:SZ", at position 0.

的 ValueError

如果我让它在尝试将其转换为日期时间之前打印每次迭代的第一个值(通过添加打印语句),我会得到

2024-05-10T00:00:00Z
这让我感到困惑。字符串中似乎没有任何额外的空格,也没有任何不同格式的值,特别是因为它在第一个值上引发了错误。即使将格式更改为“ISO8601”也会引发此错误。你知道这里出了什么问题吗?

以下是数据摘录: Data

python pandas datetime
1个回答
0
投票

缺少

%
以及错误使用
pd.to_datetime
,您需要更换 :

df['Time'] = pd.to_datetime('Time', format='%Y-%m-%dT%H:%M:SZ')

与:

df['Time'] = pd.to_datetime(df['Time'], format='%Y-%m-%dT%H:%M:%SZ')
© www.soinside.com 2019 - 2024. All rights reserved.