Python ValueError:时间数据与格式不匹配';%Y/%m/%d%H:%m:%S';
我需要将数千条Datetime记录转换为时间戳。当我运行以下代码时:Python ValueError:时间数据与格式不匹配';%Y/%m/%d%H:%m:%S';,python,pandas,datetime,timestamp,strptime,Python,Pandas,Datetime,Timestamp,Strptime,我需要将数千条Datetime记录转换为时间戳。当我运行以下代码时: from time import strptime import pandas as pd import numpy as np import datetime cepo = str(pd.read_csv('test.csv',sep = ',')) print(cepo) element = datetime.datetime.strptime(cepo,'%Y/%m/%d %H:%M:%S') tuple = ele
from time import strptime
import pandas as pd
import numpy as np
import datetime
cepo = str(pd.read_csv('test.csv',sep = ','))
print(cepo)
element = datetime.datetime.strptime(cepo,'%Y/%m/%d %H:%M:%S')
tuple = element.timetuple()
timestamp = time.mktime(tuple)
print(timestamp)
我得到以下错误:
Date Time
0 2018/02/11 02:36:59
1 2018/02/12 00:47:11
2 2018/02/12 01:36:36
3 2018/02/12 03:27:51
4 2018/02/12 03:48:29
5 2018/02/12 03:50:49
Traceback (most recent call last):
File "epoch.py", line 9, in <module>
element = datetime.datetime.strptime(cepo,'%Y/%m/%d %H:%M:%S')
File "/Users/joaofontiela/opt/anaconda3/envs/pywork/lib/python3.8/_strptime.py", line 568, in _strptime_datetime
tt, fraction, gmtoff_fraction = _strptime(data_string, format)
File "/Users/joaofontiela/opt/anaconda3/envs/pywork/lib/python3.8/_strptime.py", line 349, in _strptime
raise ValueError("time data %r does not match format %r" %
ValueError: time data ' Date Time\n0 2018/02/11 02:36:59\n1 2018/02/12 00:47:11\n2 2018/02/12 01:36:36\n3 2018/02/12 03:27:51\n4 2018/02/12 03:48:29\n5 2018/02/12 03:50:49' does not match format '%Y/%m/%d %H:%M:%S'
如何修复“时间数据与格式“%Y/%m/%d%H:%m:%S”不匹配”的错误?您可以轻松地将csv中的“日期”和“时间”列组合在一起
# load the csv file content into a dataframe
df = pd.read_csv(filename)
# combine date and time columns and parse to datetime
df['datetime'] = pd.to_datetime(df['Date'] + ' ' + df['Time'])
print(df['datetime'])
0 2018-02-11 02:36:59
1 2018-02-12 00:47:11
2 2018-02-12 01:36:36
3 2018-02-12 03:27:51
4 2018-02-12 03:48:29
5 2018-02-12 03:50:49
Name: datetime, dtype: datetime64[ns]
您可以计算Unix时间(自1970-01-01 UTC以来的Posix/秒),如下所示
为什么要将数据帧转换为字符串?如果要使用pandas将字符串解析为datetime,请使用。csv转换尝试处理的文件末尾是否有意外字符?假定text.csv是完整显示的,并且在下一行(未显示)中没有一系列格式错误的字符引起问题。感谢您的帮助。但现在又出现了另一个问题。如何将df.datetime转换为posix数据格式?我研究了几个示例,其中大多数都涉及将posix数据格式转换为datetime。任何帮助都是好的,因为我不是一个熟练的pragrammer@Meocomandante当然,我已经编辑过了
.astype(int)
从纪元开始转换为纳秒,因此您可以除以1e9得到秒。非常感谢您的帮助
# load the csv file content into a dataframe
df = pd.read_csv(filename)
# combine date and time columns and parse to datetime
df['datetime'] = pd.to_datetime(df['Date'] + ' ' + df['Time'])
print(df['datetime'])
0 2018-02-11 02:36:59
1 2018-02-12 00:47:11
2 2018-02-12 01:36:36
3 2018-02-12 03:27:51
4 2018-02-12 03:48:29
5 2018-02-12 03:50:49
Name: datetime, dtype: datetime64[ns]
df['posix[s]'] = df['datetime'].astype(int) / 1e9
print(df['posix[s]'])
0 1.518317e+09
1 1.518396e+09
2 1.518399e+09
3 1.518406e+09
4 1.518407e+09
5 1.518407e+09
Name: posix[s], dtype: float64