如何更改 Pandas 中的日期时间格式

2024-11-25 08:49:00
admin
原创
155
摘要:问题描述:我的数据框有一DOB列(示例格式1/1/2016),默认情况下会转换为 Pandas dtype“对象”。使用 将其转换为日期格式df['DOB'] = pd.to_datetime(df['DOB']),日期将转换为:2016-01-26并且其dtype为:datetime64[ns]。现在我想将...

问题描述:

我的数据框有一DOB列(示例格式1/1/2016),默认情况下会转换为 Pandas dtype“对象”。

使用 将其转换为日期格式df['DOB'] = pd.to_datetime(df['DOB']),日期将转换为:2016-01-26并且其dtype为:datetime64[ns]

现在我想将此日期格式转换为01/26/2016或任何其他通用日期格式。我该怎么做?

(无论我尝试哪种方法,它总是以格式显示日期2016-01-26。)


解决方案 1:

dt.strftime如果您需要转换datetime为其他格式,则可以使用(但请注意,dtype列的将是objectstring)):

import pandas as pd

df = pd.DataFrame({'DOB': {0: '26/1/2016', 1: '26/1/2016'}})
print (df)
         DOB
0  26/1/2016 
1  26/1/2016

df['DOB'] = pd.to_datetime(df.DOB)
print (df)
         DOB
0 2016-01-26
1 2016-01-26

df['DOB1'] = df['DOB'].dt.strftime('%m/%d/%Y')
print (df)
         DOB        DOB1
0 2016-01-26  01/26/2016
1 2016-01-26  01/26/2016

解决方案 2:

两者之间有区别

  • 数据框单元格的内容(二进制值)和

  • 它向我们人类呈现(展示)它。

所以问题是:如何在不改变数据/数据类型本身的情况下实现我的数据的适当呈现?

答案如下:

  • 如果你使用Jupyter 笔记本显示数据框,或者

  • 如果你想以HTML 文件的形式进行演示(即使已经准备好了许多多余的id属性class以便进一步进行CSS 样式设置 — — 你可能会用到它们,也可能不会用到它们),

使用样式样式不会更改数据框列的数据/数据类型。

现在我向您展示如何在 Jupyter 笔记本中找到它——以 HTML 文件形式的演示,请参阅本答案末尾附近的注释。

我假设您的列DOB 已经具有该datetime64类型(您已表明您知道如何达到该类型)。我准备了一个简单的数据框(只有一列)来向您展示一些基本样式:

  • 未设置样式:

df
          DOB
0  2019-07-03
1  2019-08-03
2  2019-09-03
3  2019-10-03
  • 将其样式化为mm/dd/yyyy

df.style.format({"DOB": lambda t: t.strftime("%m/%d/%Y")})
          DOB
0  07/03/2019
1  08/03/2019
2  09/03/2019
3  10/03/2019
  • 将其样式化为dd-mm-yyyy

df.style.format({"DOB": lambda t: t.strftime("%d-%m-%Y")}) 
          DOB
0  03-07-2019
1  03-08-2019
2  03-09-2019
3  03-10-2019

小心!

返回的对象不是数据框 — — 它是类的对象Styler,因此不要将其分配回df

不要这样做:

df = df.style.format({"DOB": lambda t: t.strftime("%m/%d/%Y")})    # Don't do this!

(每个数据框都有可通过其属性访问的 Styler 对象.style,我们更改的是此df.style对象,而不是数据框本身。)


问答:

  • 问: 为什么用作Jupyter 笔记本单元格中最后一个命令的 Styler 对象(或返回它的表达式)显示你的(样式)表格,而不是 Styler 对象本身?

  • 答:因为每个 Styler 对象都有一个回调方法._repr_html_(),它返回用于呈现数据框(作为一个漂亮的 HTML 表)的 HTML 代码。

Jupyter Notebook IDE自动调用此方法来渲染具有它的对象。


笔记:

您不需要使用 Jupyter 笔记本进行样式设置(即,无需更改其数据/数据类型即可很好地输出数据框)。

render()如果您想获取带有 HTML 代码的字符串(例如,在 Web 上发布格式化的数据框,或者只是以 HTML 格式呈现表格),Styler 对象也有一个方法:

df_styler = df.style.format({"DOB": lambda t: t.strftime("%m/%d/%Y")})
HTML_string = df_styler.render()

解决方案 3:

改变格式但不改变类型:

df['date'] = pd.to_datetime(df["date"].dt.strftime('%Y-%m'))

解决方案 4:

与第一个答案相比,我建议dt.strftime()先使用,然后使用pd.to_datetime()。这样,它仍然会产生 datetime 数据类型。

例如,

import pandas as pd

df = pd.DataFrame({'DOB': {0: '26/1/2016 ', 1: '26/1/2016 '})
print(df.dtypes)

df['DOB1'] = df['DOB'].dt.strftime('%m/%d/%Y')
print(df.dtypes)

df['DOB1'] = pd.to_datetime(df['DOB1'])
print(df.dtypes)

解决方案 5:

下面的代码对我有用,而不是以前的代码:

df['DOB']=pd.to_datetime(df['DOB'].astype(str), format='%m/%d/%Y')

解决方案 6:

你可以试试这个。它会将日期格式转换为 DD-MM-YYYY:

df['DOB'] = pd.to_datetime(df['DOB'], dayfirst = True)

解决方案 7:

df['variable'] = pd.to_datetime(df['variable'],errors='coerce') 复制代码

解决方案 8:

下面的代码更改为“datetime”类型并格式化给定的格式字符串。

df['DOB'] = pd.to_datetime(df['DOB'].dt.strftime('%m/%d/%Y'))

解决方案 9:

以下是对我有用的代码。我们需要非常小心格式。以下链接对于了解您现有的格式并更改为所需格式绝对有用(请遵循 strftime() 和 strptime() 行为中的 strftime () 和 strptime()格式代码):

data['date_new_format'] = pd.to_datetime(data['date_to_be_changed'] , format='%b-%y')
相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   1565  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1354  
  信创国产芯片作为信息技术创新的核心领域,对于推动国家自主可控生态建设具有至关重要的意义。在全球科技竞争日益激烈的背景下,实现信息技术的自主可控,摆脱对国外技术的依赖,已成为保障国家信息安全和产业可持续发展的关键。国产芯片作为信创产业的基石,其发展水平直接影响着整个信创生态的构建与完善。通过不断提升国产芯片的技术实力、产...
国产信创系统   21  
  信创生态建设旨在实现信息技术领域的自主创新和安全可控,涵盖了从硬件到软件的全产业链。随着数字化转型的加速,信创生态建设的重要性日益凸显,它不仅关乎国家的信息安全,更是推动产业升级和经济高质量发展的关键力量。然而,在推进信创生态建设的过程中,面临着诸多复杂且严峻的挑战,需要深入剖析并寻找切实可行的解决方案。技术创新难题技...
信创操作系统   27  
  信创产业作为国家信息技术创新发展的重要领域,对于保障国家信息安全、推动产业升级具有关键意义。而国产芯片作为信创产业的核心基石,其研发进展备受关注。在信创国产芯片的研发征程中,面临着诸多复杂且艰巨的难点,这些难点犹如一道道关卡,阻碍着国产芯片的快速发展。然而,科研人员和相关企业并未退缩,积极探索并提出了一系列切实可行的解...
国产化替代产品目录   28  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用