在Python中格式化时间戳

2024-04-19 15:28:48 发布

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

我收到一个格式化错误。。你知道吗

我的代码:

date,bid,ask = np.loadtxt('EURUSDH1_1week1.csv', unpack=True, delimiter=',', converters={0:mdates.strpdate2num('%Y%m%d%H%M%S')})

错误:

ValueError: time data '20180406,00:48.9,1.22394,1.22417,,"' does not match format '%Y%m%d%H%M%S'

csv文件中的数据显示为(四列):

20180406    00:48.9 1.22394 1.22417
20180406    00:48.9 1.22394 1.22417
20180406    00:53.3 1.2239  1.22421
20180406    00:54.6 1.22391 0
20180406    01:51.8 0       1.2241
20180406    02:19.4 1.22396 1.22404
20180406    02:49.8 1.22391 1.22399

如何从时间戳中删除冒号和句点?你知道吗


Tags: csv代码truedate错误npaskdelimiter
1条回答
网友
1楼 · 发布于 2024-04-19 15:28:48

numpy对很多事情都有好处。但是对于混合类型的数据pandas通常更方便。你知道吗

这是使用pandas将数据转换为datetime的一种方法。你知道吗

import pandas as pd
from io import StringIO

mystr = StringIO("""20180406    00:48.9 1.22394 1.22417
20180406    00:48.9 1.22394 1.22417
20180406    00:53.3 1.2239  1.22421
20180406    00:54.6 1.22391 0
20180406    01:51.8 0       1.2241
20180406    02:19.4 1.22396 1.22404
20180406    02:49.8 1.22391 1.22399""")

# replace mystr with 'file.csv'
df = pd.read_csv(mystr, delim_whitespace=True, header=None,
                 names=['Date', 'Time', 'Bid', 'Ask'])

# create datetime  column
df['DateTime'] = pd.to_datetime(df['Date'].map(str) + ' ' + df['Time'])

print(df)

#        Date     Time      Bid      Ask            DateTime
# 0  20180406  00:48.9  1.22394  1.22417 2018-04-06 00:48:53
# 1  20180406  00:48.9  1.22394  1.22417 2018-04-06 00:48:53
# 2  20180406  00:53.3  1.22390  1.22421 2018-04-06 00:53:17
# 3  20180406  00:54.6  1.22391  0.00000 2018-04-06 00:54:36
# 4  20180406  01:51.8  0.00000  1.22410 2018-04-06 01:51:47
# 5  20180406  02:19.4  1.22396  1.22404 2018-04-06 02:19:23
# 6  20180406  02:49.8  1.22391  1.22399 2018-04-06 02:49:47

结果中的数据类型:

print(df.dtypes)

# Date                 int64
# Time                object
# Bid                float64
# Ask                float64
# DateTime    datetime64[ns]
# dtype: object

相关问题 更多 >