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实战之数字日期和时间的高级处理

Python实战之数字日期和时间的高级处理

Python MySQL 错误 1064 插入日期时间字符串

Python Pandas 数据以日期格式输出到 excel 的问题 [重复]

python输入日期输出星期几

python生成随机日期字符串