熊猫:无法将日期时间 YYYY-mm-dd 转换为 dd-mm-YYYY

Posted

技术标签:

【中文标题】熊猫:无法将日期时间 YYYY-mm-dd 转换为 dd-mm-YYYY【英文标题】:Pandas: can't convert datetime YYYY-mm-dd to dd-mm-YYYY 【发布时间】:2019-02-16 21:05:55 【问题描述】:

我有一个带有日期列的 pandas 数据框(datetime64[ns] 格式) 日期列为 yyyy-mm-dd(如 2018-09-12)。我想转换它 到 dd-mm-yyyy 但我尝试的方法似乎不起作用:

pd.to_datetime(df['date'], format='%d-%m-%Y')
0    2018-09-12
1    2018-09-12

编辑:添加示例 df

df.head(3)
        date      nr
0   2018-09-12   144
1   2018-09-12    37
2   2018-09-12    28

df.info()
date   datetime64[ns]
nr     int

“日期”不包含任何 Nan 或 Nat

【问题讨论】:

很遗憾,示例不完整,因此我们无法对其进行测试。但是,to_datetimeformat 参数用于指定用于解析的格式,而不是用于打印解析的 datetime 实例的格式。 你能解释一下你需要什么来完成这个例子吗?我需要添加数据框的示例吗? 没有人知道你原来的 dfdf['date'] 的样子。我们只能猜测。 【参考方案1】:

日期被列为 yyyy-mm-dd(如 2018-09-12)。

是的,但这不是它们的存储方式。您看到的是datetime 对象的特定字符串表示。在内部,datetime 的值为stored as integers。

我想将其转换为 dd-mm-yyyy 但我尝试的似乎没有 作品

正确,因为 pd.to_datetime 转换为 datetime 对象。您需要将您的系列转换为一系列字符串,这些字符串将具有 object dtype:

df['date'] = df['date'].dt.strftime('%d-%m-%Y')

【讨论】:

【参考方案2】:

您需要将使用to_datetime 解析的日期转换为所需表示形式的字符串。您现在看到的显示格式是用于Datetime 对象的默认格式:

In [10]: frame = 'date': ['2018-09-12', '2016-10-02']

In [11]: pd.to_datetime(frame['date']).strftime('%d-%m-%Y')
Out[11]: Index(['12-09-2018', '02-10-2016'], dtype='object')

【讨论】:

以上是关于熊猫:无法将日期时间 YYYY-mm-dd 转换为 dd-mm-YYYY的主要内容,如果未能解决你的问题,请参考以下文章

如何将熊猫中的日期时间列全部转换为同一时区

将字符串'yyyy-mm-dd'转换为日期时间[重复]

如何将“工作日月日时间”转换为日期时间(YYYY-MM-DD)?

熊猫日期列中的不同格式 - 列与行的数据类型

将UTC时间戳转换为熊猫中的本地时区问题

将 Access 2007 日期/时间转换为文本,将 mm/dd/yyyy 转换为 yyyy-mm-dd