python字符串到日期时间的错误输出
Posted
技术标签:
【中文标题】python字符串到日期时间的错误输出【英文标题】:Wrong output on python string to datetime 【发布时间】:2022-01-16 16:27:22 【问题描述】:所以我想读取 csv 并为数据绘制图表。我使用 plotly 烛台来输出股票数据。但是,我在这里遇到的一些问题很奇怪
start=datetime(2017,6,15,10,22)
end=datetime(2021,12,10,19,59)
df=pd.read_csv("test.csv")
df.head()
从excel中读取的dataframe的输出是这样的
Date Name Open High Low Close
0 12/10/2021 19:59 Apple Inc 179.84 179.85 179.81 179.84
1 12/10/2021 19:58 Apple Inc 179.82 179.82 179.80 179.81
2 12/10/2021 19:57 Apple Inc 179.84 179.84 179.82 179.84
3 12/10/2021 19:56 Apple Inc 179.81 179.82 179.78 179.82
4 12/10/2021 19:55 Apple Inc 179.83 179.83 179.80 179.80
这里我使用 strptime() 将数据转换为日期时间
dates1=df.iloc[:,0].tolist()
for i in range(len(dates1)):
convertdates1.append(datetime.strptime(dates1[i],'%m/%d/%Y %H:%M'))
convertdates1[0]
但是输出错误
datetime.datetime(2020, 11, 12, 0, 0)
您可以看到 12/10/2021 19:59 已转换为 11/12/2020 00:00,为什么?我怎样才能得到正确的结果?我需要在 plotly 烛台功能上使用它
fig=go.Figure(data=[go.Candlestick(x=convertdates1,open=open,close=close,high=high,low=low)])
fig.show()
如果您需要数据样本
Date,Name,Open,High,Low,Close
12/10/2021 19:59,Apple Inc,179.84,179.85,179.81,179.84
12/10/2021 19:58,Apple Inc,179.82,179.82,179.80,179.81
12/10/2021 19:57,Apple Inc,179.84,179.84,179.82,179.84
12/10/2021 19:56,Apple Inc,179.81,179.82,179.78,179.82
【问题讨论】:
【参考方案1】:对我来说,to_datetime
在熊猫替代品中完美工作:
df.iloc[:,0] = pd.to_datetime(df.iloc[:,0], format='%m/%d/%Y %H:%M')
print (df)
Date Name Open High Low Close
0 2021-12-10 19:59:00 Apple Inc 179.84 179.85 179.81 179.84
1 2021-12-10 19:58:00 Apple Inc 179.82 179.82 179.80 179.81
2 2021-12-10 19:57:00 Apple Inc 179.84 179.84 179.82 179.84
3 2021-12-10 19:56:00 Apple Inc 179.81 179.82 179.78 179.82
测试您的解决方案并且运行良好:
convertdates1 = []
dates1=df.iloc[:,0].tolist()
for i in range(len(dates1)):
convertdates1.append(datetime.strptime(dates1[i],'%m/%d/%Y %H:%M'))
a = convertdates1[0]
print (a)
2021-12-10 19:59:00
【讨论】:
试过 to_datetime() 效果很好。这是一个奇怪的错误以上是关于python字符串到日期时间的错误输出的主要内容,如果未能解决你的问题,请参考以下文章
Python MySQL 错误 1064 插入日期时间字符串