将字符串转换为日期对象(csv条目中不包含时间戳)

2024-04-19 18:02:29 发布

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

我一直在这里得到一个值错误。我做错了什么?我正在读写的CSV没有每个日期条目的时间戳。日期仅以“mm dd yyyy”格式输入

Traceback (most recent call last):
  File "C:/Users/Matthew Olive/PycharmProjects/excel_scripts/contango_cleaner.py", line 17, in <module>
    dateS = datetime.strptime(row[2], "%m-%d-%Y")
  File "C:\Users\Matthew Olive\AppData\Local\Programs\Python\Python38\lib\_strptime.py", line 568, in _strptime_datetime
    tt, fraction, gmtoff_fraction = _strptime(data_string, format)
  File "C:\Users\Matthew Olive\AppData\Local\Programs\Python\Python38\lib\_strptime.py", line 349, in _strptime
    raise ValueError("time data %r does not match format %r" %
ValueError: time data '' does not match format '%m-%d-%Y'

这是我的密码:

import csv
from datetime import datetime

path = "C:\\Users\\Matthew Olive\\Desktop\\Trading Stuff\\sample_for_python .csv"
file = open(path, newline = '')
reader = csv.reader(file)
data =[]
for row in reader:
    dateC = datetime.strptime(row[0], "%m-%d-%Y")
    dateS = datetime.strptime(row[2], "%m-%d-%Y")
    contango = float(row[1])
    open_price = float(row[3])
    close_price = float(row[4])
    data.append([dateC, contango, dateS, open_price, close_price])
print(data[0])

当我试图将日期字符串转换为适当的datetime对象时,问题似乎出现了。该程序的最终目标是“如果dateC与日期不匹配,则删除该特定行中的第一个和第二个条目。然后创建一个新的CSV文件并将其导出到Excel。我正在尝试自动执行一个我经常手动执行的过程。(对于每一行,如果前两列在第三列、第四列和第五列中没有匹配的日期和浮点值,则不需要前两列)

以下是我的CSV的结构(列): dateC和dateS应该是datetime对象,而其他对象是浮动对象

[日期,续,日期,开盘价,收盘价]


Tags: csv对象indatadatetimeuserspricefile
1条回答
网友
1楼 · 发布于 2024-04-19 18:02:29

我的评论的例证;如何使用pandas解决这个问题:

import io
import pandas as pd

# some example input with missing dates (empty fields in the csv)...
data = io.StringIO("""dateC,contango,dateS,open_price,close_price
02-03-2020,1,02-04-2020,50,55
,2,02-04-2020,51,56
02-03-2020,3,,52,57""")

# just replace 'data' with the path to your csv:
df = pd.read_csv(data)

df['dateC'] = pd.to_datetime(df['dateC'], errors='coerce')
df['dateS'] = pd.to_datetime(df['dateS'], errors='coerce')

# df
#        dateC  contango      dateS  open_price  close_price
# 0 2020-02-03         1 2020-02-04          50           55
# 1        NaT         2 2020-02-04          51           56
# 2 2020-02-03         3        NaT          52           57

一些参考资料:

相关问题 更多 >