当前位置: 首页 > 知识库问答 >
问题:

使用熊猫to_datetime()方法与正确的语法,未识别的值类型:str?

东方玉泽
2023-03-14

我正在努力使用pandas的to_datetime函数将csv文件中的条目转换为datetime对象,以便将它们用于可视化。我似乎误解了一些关于如何创建datetime对象或参数的简单问题。

我有一个csv文件,包括几个日期记录,一个日期/时间记录的例子(即一行csv文件的例子)...

date_column: 17-Apr-18 # day first (not-zero-padded), month abbrev, year
hour_and_seconds_column: 23:58:40 # hour, minute zero-padded, second

我想使用matplotlib可视化这个csv文件中的每个时间。我正在阅读留档,我记得看到Matplotlib与datetime对象配合得很好...所以我假设我需要使用熊猫的to_datetime()方法来帮助我转换csv文件的每个日期/时间记录。

所以我有一个方法,首先从csv文件中读取,创建一个列表列表,其中每个列表应该代表csv文件中的一条记录。我只读了三张唱片。我不会包含代码,因为我真的怀疑它与我遇到的问题相关,但我添加了一个打印声明,它向我暗示记录正在被正确地读取和保存在列表中...这是三张唱片的例子

    time_records = [[ID_IDENTIFIER, '14-Mar-18', '23:58:40'], [ID_IDENTIFIER, '14-Mar-18', '23:58:21'], [ID_IDENTIFIER, '14-Mar-18', '23:57:24']]

(ID_标识符在代码中有一个实际的ID号)

我还认为,因为这些日期不一定是python制作datetime对象的传统格式,所以在调用pandas的to_datetime()方法时,我需要使用format参数。所以我用下面的字符串变量来表示格式。有可能我写错了。。。。

    time_format_from_csv_str = time.strftime("%#d-%b-%y %H:%M:%S")

最后一部分是,我创建了一个for循环来组合time_records中每个列表的最后两列。我只是要发布代码,但我将天/时间信息与小时/分钟信息组合成一个字符串:

        for each in time_records:
            time_str = str(each[1]) + " " + str(each[2])
            print(time_str)
            a_date_object = pd.to_datetime(time_str, 
                format=time_format_from_csv_str)
    print(a_date_object)

程序在到达带有日期对象的行时崩溃。错误消息有点长,分为两部分。

  Traceback (most recent call last):
      File "C:\Users\biney\AppData\Roaming\Python\Python36\site-packages\pandas\core\tools\datetimes.py", line 377, in _convert_listlike
      values, tz = conversion.datetime_to_datetime64(arg)
      File "pandas\_libs\tslibs\conversion.pyx", line 188, in pandas._libs.tslibs.conversion.datetime_to_datetime64
      TypeError: Unrecognized value type: <class 'str'>

  During handling of the above exception, another exception occurred:

  Traceback (most recent call last):
      File "basic_content_analysis.py", line 303, in <module>
         main()
      File "basic_content_analysis.py", line 292, in main
         timestamp_date_visualization()
      File "basic_content_analysis.py", line 204, in timestamp_date_visualization
         a_date_object = pd.to_datetime(time_str, dayfirst=True, format=time_format_from_csv_str)
      File "C:\Users\biney\AppData\Roaming\Python\Python36\site-packages\pandas\core\tools\datetimes.py", line 469, in to_datetime
         result = _convert_listlike(np.array([arg]), box, format)[0]
      File "C:\Users\biney\AppData\Roaming\Python\Python36\site-packages\pandas\core\tools\datetimes.py", line 380, in _convert_listlike
         raise e
      File "C:\Users\biney\AppData\Roaming\Python\Python36\site-packages\pandas\core\tools\datetimes.py", line 347, in _convert_listlike
errors=errors)
      File "pandas\_libs\tslibs\strptime.pyx", line 157, in pandas._libs.tslibs.strptime.array_strptime
        ValueError: time data '14-Mar-18 23:58:40' does not match format '18-Jun-18 17:08:54' (match)

在这一点上,我不知道如何解决这个问题,因为我认为pd.to_datetime可以将字符串作为参数。我也不明白我的字符串如何不符合它给我的格式。

我如何修复这个错误?最终,我如何从csv文件中读取条目,并将它们转换为datetime对象(因为我非常确定这将是我能够使用matplotlib可视化时间数据的最佳方式?)


共有1个答案

姚晋
2023-03-14

将format参数更改为以下参数后,此问题已得到修复:

    a_date_object = pd.to_datetime(time_str, dayfirst=True, format="%d-%b-%y %H:%M:%S")

我想我的问题是。。。“在pandas的to_datetime()方法中,我传入一个看似相同的字符串变量来格式化参数,这有什么不对?”

 类似资料:
  • 问题内容: 对于大熊猫,有人会知道,除了 (i), (以及like等的其他变体,等等) (ii) (iii), 如字符串列,总有一个的? 另外,我想知道,如果有来自任何数据类型分开(I),(II)和(iii)在上面的列表中不会使这是一个? 问题答案: pandas1.0.0发布后,于2020年2月编辑 熊猫通常为每个Series使用NumPy数组和dtype(数据帧是Series的集合,每个都有自

  • 我有一个数据帧,其中包含各种不同的值,表示丢失。我对其进行了修改,现在应将它们全部指定为“NaN”,如下所示: 但是使用建立在公认的缺失值上的熊猫函数不起作用,我认为这是由于我没有导入指定值的数据帧(因为这会导致其他问题,我正在处理一个比示例)我现在正在寻找一种方法来在此数据集中应用熊猫函数,如。

  • 对于熊猫,有人知道,除了 (i) ,(以及的其他变体,如,等) (ii) (iii), 例如字符串列,总是有一个的? 或者,我想知道,在上面的列表中,除了(I)、(ii)和(iii)之外,是否有任何数据类型不使其成为对象?

  • 我正在尝试使用 curl 在 pinterest.com 上执行登录。我得到了以下请求-响应-流: GET请求登录表单并清除隐藏字段(csrftoken) POST请求登录凭据(邮件和密码)和scraped csrftoken 接收会话Cookie以进行登录 使用Curl,我可以看到以下发送和接收的标头: 因此,在第1步之后,设置了两个cookie csrfToken和_pinterest_ses

  • 问题内容: 这个想法是使用更少的连接和更好的性能。连接是否随时终止? 对于另一个问题,是否打开新连接? 问题答案: 不,多路复用器不会过期。没有GetDatabase不会打开新连接。basics.md涵盖了所有内容 -特别是: 从GetDatabase返回的对象是便宜的直通对象,不需要存储。

  • 我有一个使用jquery mobile的应用程序,它由几个html页面组成,每个页面中都有几个jquery页面元素。在桌面浏览器上,一切正常,但当我把它加载到我的android设备(运行2.3)上时,第一个页面看起来很好,但只要你点击一个链接(比如从index.html)- 那么,是否有正确的方法在不同的html页面之间移动呢?我没有得到任何浏览器错误,所以一切似乎都工作正常,但没有jqm的样式或