将datetime对象转换为在python中读取cv的float

时间:2018-08-02 04:31:40

标签: python csv datetime

我想将日期时间放入数组中,有解决方案吗?我是新手

import csv
from datetime import datetime    
date = []
price = []
tdate = []
tprice = []

with open('TSLA.csv', 'r') as csvfile:
    csvR = csv.reader(csvfile)
    next(csvR)  # skipping column names
    for i,row in enumerate(csvR):
        row_date = datetime.strptime(row[0], "%m/%d/%Y")
        date.append(float(row_date))
        price.append(float(row[5]))

如果您想看到错误:

File "csvtest.py", line 14, in <module>
    date.append(float(row_date))
TypeError: float() argument must be a string or a number, not 'datetime.datetime'

更新

with open('TSLA.csv', 'r') as csvfile:
    csvR = csv.reader(csvfile)
    next(csvR)  # skipping column names
    for i,row in enumerate(csvR):
        ts = time.strptime(row[0], "%m/%d/%Y")
        time.mktime(ts)
        date.append(float(ts))
        price.append(float(row[5]))

错误:

TypeError: float() argument must be a string or a number, not 'time.struct_time'

2 个答案:

答案 0 :(得分:0)

在这里转换为float并不是很有用。但是,您可以将datetime对象转换为timestamp对象。

考虑到第[0]行包含一个日期时间对象,则应执行以下操作:

import time
timestamp = time.mktime((row[0].timetuple())

timestamp是从日期时间对象生成的UTC时间戳。

更新

观察到行[0]以字符串格式保存日期。

>>> import time 
>>> ts = time.strptime("10/10/2018", "%m/%d/%Y")
>>> time.mktime(ts)
>>> 1539109800.0

答案 1 :(得分:0)

喜欢

with open('TSLA.csv', 'r') as csvfile:
    csvR = csv.reader(csvfile)
    next(csvR)  # skipping column names
    for i,row in enumerate(csvR):
        date.append(datetime.strptime(row[0],'%m/%d/%Y'))
        price.append(float(row[5]))
        if(i >= 25):
            tdate.append(float(row[7]))
            tprice.append(float(row[5]))
            break