当前位置: 首页 > 面试题库 >

使用pandas.to_datetime转换时指定日期格式

梁池暝
2023-03-14
问题内容

我在csv文件中保存了数据,日期以标准的英国格式存储为字符串%d/%m/%Y--表示它们看起来像:

12/01/2012
30/01/2012

上面的示例代表2012年1月12日和2012年1月30日。

当我使用pandas版本0.11.0导入此数据时,我进行了以下转换:

import pandas as pd
...
cpts.Date = cpts.Date.apply(pd.to_datetime)

但它转换日期不一致。使用我现有的示例,2012年12月1日会将其转换为表示2012年12月1日的datetime对象,而30/01/2012将转换为2012年1月30日,这就是我想要的。

看完这个问题后,我尝试了:

cpts.Date = cpts.Date.apply(pd.to_datetime, format='%d/%m/%Y')

但结果完全一样。该源代码表明我正在做正确的事情,所以我无所适从。有人知道我在做什么错吗?


问题答案:

您可以在读取数据时使用parse_datesfrom选项read_csv直接进行转换。
这里的技巧是用来dayfirst=True指示您的日期以天而不是月份开始。请参阅此处以获取更多信息:http :
//pandas.pydata.org/pandas-
docs/dev/genic/pandas.io.parsers.read_csv.html


当您的日期必须是索引时:

>>> import pandas as pd
>>> from StringIO import StringIO
>>> s = StringIO("""date,value
... 12/01/2012,1
... 12/01/2012,2
... 30/01/2012,3""")
>>> 
>>> pd.read_csv(s, index_col=0, parse_dates=True, dayfirst=True)
            value
date             
2012-01-12      1
2012-01-12      2
2012-01-30      3

或者,当您的日期仅在某个列中时:

>>> s = StringIO("""date
... 12/01/2012
... 12/01/2012
... 30/01/2012""")
>>> 
>>> pd.read_csv(s, parse_dates=[0], dayfirst=True)
                 date
0 2012-01-12 00:00:00
1 2012-01-12 00:00:00
2 2012-01-30 00:00:00


 类似资料:
  • 问题内容: 默认输出格式为: 我无法弄清楚如何仅输出具有特定格式的日期部分: 或csv文件中两列中的日期和时间: 该文档太简短,无法给我任何有关如何执行这些操作的线索。有人可以帮忙吗? 问题答案: 您可以将它们保存为单独的列: 然后具体说明要导出到csv的列:

  • 问题内容: 我有一行C#代码,试图在Java中复制。代码如下。 目的是将xml上下文中已经存在的DateTime替换为代表通用时间的DateTime。 我尝试使用 但由于不推荐使用Date.parse()而无法继续。我通读了Eclipse中的注释,并按建议尝试使用DateFormat,但DateFormat没有解析方法。 有人可以建议不使用任何第三方库的问题解决方案吗? 问题答案: 您可以使用:

  • 问题内容: 在这里约会我的问题: 我知道该字符串位于UTC时区。我需要将此字符串转换为“ yyy-mm-dd’T’HH:mm:ssZ”格式。 为此,我使用以下代码: 问题是此代码在时区UTC + 1的服务器上运行,其结果是: 它从初始时间删除2小时,并放置UTC时间戳(0000)。 你能帮我解决这个问题吗?谢谢。 问题答案: 如果输出格式为UTC + 1,则应在外包格式器中使用该格式,而不是UTC

  • 问题内容: 我有标准ISO 8601格式的日期/时间值,例如 2010-07-26T11:37:52Z 。 我想要日期 为2010年7月26日(dd-mon-yyyy) 。我该怎么做? 问题答案: 构造两个SimpleDateFormat对象。首先,您将值从()解析为Date对象,第二次用于将Date对象转换为字符串,例如 解析可能会引发ParseException,因此您需要捕获并处理它。

  • 问题内容: 我有日期的字符串形式: 我想将其格式化为 我在用 但它不起作用。 我如何转换为? 问题答案: 试试这个 现在

  • 问题内容: 我收到的日期值是这样的JSON对象: 我想用Java代码将其解析为或作为。 我想知道什么是简单的方法。 问题答案: 我认为第一个数字()是自纪元以来的毫秒数,并且是时区。鉴于以下示例代码似乎是这种情况,它似乎可以满足您的要求。 以下代码使用Jackson解析JSON输入,如果您还没有选择的JSON解析库,我建议您这样做。它缺少错误检查等。 样例代码: 输出: