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

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

邓禄
2023-03-14

我的数据帧有一个DOB列(示例格式1/1/2016),默认情况下转换为Pandas数据类型“object”。

使用< code > df[' DOB ']= PD . to _ datetime(df[' DOB '])将此转换为日期格式,日期将转换为:< code>2016-01-26,其< code>dtype为:< code>datetime64[ns]。

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

(无论我尝试什么方法,它总是以< code>2016-01-26格式显示日期。)

共有3个答案

端木桐
2023-03-14

之间是有区别的

  • 数据帧单元的内容(二进制值)和
  • 它的呈现(展示)给我们人类

所以问题是:如何在不改变数据/数据类型本身的情况下,达到我的数据的适当表示?

答案如下:

  • 如果使用 Jupyter 笔记本显示数据帧,或者
  • 如果你想以HTML文件的形式到达一个演示文稿(即使有许多准备好的多余的id属性用于进一步的CSS样式 - 你可以或可能不会使用它们),

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

现在我向您展示如何在Jupyter笔记本中找到它-有关超文本标记语言文件形式的演示文稿,请参阅本答案末尾的注释。

我假设您的列< code>DOB已经具有< code>datetime64类型(您已经表明您知道如何访问它)。我准备了一个简单的dataframe(只有一列)向您展示一些基本的样式:

> < li>

未设计风格:

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
    

    > < li>

    将其样式化为< code>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
    

    小心点!< br >返回的对象不是dataframe —它是< code>Styler类的对象,因此不要将其赋回< code>df:

    不要这样做:

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

    (每个数据帧都有其Styler对象,可通过其< code >访问。style属性,我们更改了这个< code>df.style对象,而不是dataframe本身。)

    问题和答案:

    >

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

    答:因为每个Styler对象都有一个回调方法._repr_html_(),它返回一个超文本标记语言代码来渲染你的数据帧(作为一个漂亮的超文本标记语言表)。

    Jupyter 笔记本 IDE 会自动调用此方法来呈现具有此方法的对象。

    注意:

    您不需要Jupyter笔记本来进行样式设置(即,在不更改其数据/数据类型的情况下很好地输出数据帧)。

    如果您想获得带有HTML代码的字符串(例如,用于在Web上发布格式化的数据帧,或者简单地以HTML格式显示表格),Styler对象也有一个方法< code>render():

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

  • 万俟渊
    2023-03-14

    更改格式但不更改类型:

    df['date'] = pd.to_datetime(df["date"].dt.strftime('%Y-%m'))
    
    孟韬
    2023-03-14

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

    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
    
     类似资料:
    • 问题内容: DOB列样本值的格式- 默认情况下会转换为对象,如下所示 转换为日期格式 日期转换为 是 现在,我想将此日期格式转换为任何其他通用日期格式或。我该怎么做? 无论我尝试哪种方法,它总是以格式显示日期。 问题答案: 如果需要转换为其他格式,可以使用(但请注意,列的则为):

    • 如何将此日期类型“Thu Feb 02 12:00:00 GMT-12:00 2012”更改为另一个日期类型“YYYY-MM-DD HH:MM:SS”?如果“Thu Feb 02 12:00:00 GMT-12:00 201 2”为字符串类型,如何转换“YYYY-MM-DD HH:MM:SS”的日期类型? java代码: 输出为字符串类型。我想获得日期类型输出,所以我添加了以下代码。

    • 问题内容: 当使用日志包时,Go输出类似 如何将日期和时间格式更改为类似的格式?示例(操场链接): 问题答案: 就像yed posterior所说,您可以通过实现write函数来定义自定义io.Writer。您可能还想做一个log.SetFlags(0)来完全控制。这是一个更改日期格式以及添加一些日志级别信息的示例。 输出: 2016-03-21T19:54:28.563Z [DEBUG]这已被记

    • 主要内容:日期格式化符号,Python处理,Pandas处理当进行数据分析时,我们会遇到很多带有日期、时间格式的数据集,在处理这些数据集时,可能会遇到日期格式不统一的问题,此时就需要对日期时间做统一的格式化处理。比如“Wednesday, June 6, 2020”可以写成“6/6/20”,或者写成“06-06-2020。 日期格式化符号 在对时间进行格式化处理时,它们都有固定的表示格式,比如小时的格式化符号为 ,分钟简写为 ,秒简写为 。下表对常用的日期

    • 问题内容: 我需要使用Java更改日期格式 问题答案: 如何使用从一种日期格式转换为另一种日期格式: