首页 > 解决方案 > WIndows - Python 字符串到时间

问题描述

我正在尝试将我的字符串“时间”转换为 Python 中的时间,但出现错误

尝试了多种方法不起作用:-没有零填充的 Python 日期时间格式

代码:

dt['Time'] = pd.to_datetime(dt['Time'], format= '%H:%M:%S',
infer_datetime_format=True)

数据:

Ticker,Date,Time,Open,High,Low,Close,Volume,OpenInterest
BANKNIFTY04JUN2023000CE.NFO,14/05/2020,13:00:59,65,65,65,65,20,0
BANKNIFTY04JUN2023000CE.NFO,14/05/2020,15:01:59,75,75,75,75,20,20
BANKNIFTY14MAY2013900PE.NFO,14/05/2020,
9:15:59,0.8,0.8,0.7,0.7,40,18860

错误:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "C:\Users\Ankur\anaconda3\lib\site-packages\pandas\core\tools\datetimes.py", line 728, in to_datetime
    values = convert_listlike(arg._values, format)
  File "C:\Users\Ankur\anaconda3\lib\site-packages\pandas\core\tools\datetimes.py", line 447, in _convert_listlike_datetimes
    allow_object=True,
  File "C:\Users\Ankur\anaconda3\lib\site-packages\pandas\core\arrays\datetimes.py", line 1861, in objects_to_datetime64ns
    raise e
  File "C:\Users\Ankur\anaconda3\lib\site-packages\pandas\core\arrays\datetimes.py", line 1852, in objects_to_datetime64ns
    require_iso8601=require_iso8601,
  File "pandas\_libs\tslib.pyx", line 481, in pandas._libs.tslib.array_to_datetime
  File "pandas\_libs\tslib.pyx", line 698, in pandas._libs.tslib.array_to_datetime
  File "pandas\_libs\tslib.pyx", line 694, in pandas._libs.tslib.array_to_datetime
  File "pandas\_libs\tslib.pyx", line 649, in pandas._libs.tslib.array_to_datetime
  File "pandas\_libs\tslibs\conversion.pyx", line 399, in pandas._libs.tslibs.conversion.convert_datetime_to_tsobject
  File "pandas\_libs\tslibs\np_datetime.pyx", line 117, in pandas._libs.tslibs.np_datetime.check_dts_bounds
pandas._libs.tslibs.np_datetime.OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 1-01-01 09:15:59

标签: pythondataframedatetime

解决方案


只是仔细检查 - 最后一行是否有错误的行?当我将您的数据复制到文本文件时,它有换行符,这会导致您出现问题,但我更正了这一点,以防万一 StackOverflow 奇怪地格式化它。

Pandas 通常足够聪明,可以自动计算出日期时间格式,尤其是在它是标准格式的情况下。

不管这个脚本非常适合我:

import pandas as pd

dt = pd.read_csv('data.csv')
dt['Time'] = pd.to_datetime(dt['Time'], format="%H:%M:%S")

data.csv此问题所附数据的副本在哪里。您甚至可以省略format密钥。


推荐阅读