【问题标题】:Change date format of pandas column (month-day-year to day-month-year)更改 pandas 列的日期格式(月-日-年为日-月-年)
【发布时间】:2019-10-10 16:19:55
【问题描述】:

遇到以下问题。

我的 pandas 中有一个列,其中包含一些日期和一些空值。

例子:

    1 - 3-20-2019
    2 - 
    3 - 2-25-2019 

我想将格式从月-日-年转换为日-月-年,当它为空时,我只想保持它为空。

最快的方法是什么?

谢谢!

【问题讨论】:

    标签: python pandas datetime


    【解决方案1】:

    可以使用字符串初始化日期的数据,然后将字符串转换为日期时间。然后,印刷品可以以所需的格式交付对象。

    我将使用另一种格式(以点作为分隔符),以便步骤之间的转换清晰。


    先示例代码:

    import pandas as pd
    data = {'day': ['3-20-2019', None, '2-25-2019'] }
    df = pd.DataFrame( data )
    
    df['day'] = pd.to_datetime(df['day'])
    df['day'] = df['day'].dt.strftime('%d.%m.%Y')
    df[ df == 'NaT' ] = '' 
    

    对上述内容的评论。 df 的第一个实例在 ipython 解释器中:

    In [56]: df['day']                                                  
    Out[56]: 
    0    3-20-2019
    1         None
    2    2-25-2019
    Name: day, dtype: object
    

    转换为日期时间后:

    In [58]: df['day']                                               
    Out[58]: 
    0   2019-03-20
    1          NaT
    2   2019-02-25
    Name: day, dtype: datetime64[ns]
    

    所以我们有

    In [59]: df['day'].dt.strftime('%d.%m.%Y')
    Out[59]: 
    0    20.03.2019
    1           NaT
    2    25.02.2019
    Name: day, dtype: object
    

    NaT 会出问题。所以我们用空字符串替换它的所有出现。

    In [73]: df[ df=='NaT' ] = ''
    
    In [74]: df
    Out[74]: 
              day
    0  20.03.2019
    1            
    2  25.02.2019
    

    【讨论】:

    • 谢谢。工作,虽然有一些变化: df['date'] = pd.to_datetime(df['date'], errors='coerce') df['date'] = df['datum' ].dt.strftime('%d-%m-%Y') df.replace('NaT','', inplace=True)
    【解决方案2】:

    不确定这是否是完成它的最快方法。总之,

    df = pd.DataFrame({'Date': {0: '3-20-2019', 1:"", 2:"2-25-2019"}}) #your dataframe
    df['Date'] = pd.to_datetime(df.Date) #convert to datetime format
    df['Date'] = [d.strftime('%d-%m-%Y') if not pd.isnull(d) else '' for d in df['Date']]
    

    输出:

             Date
    0  20-03-2019
    1            
    2  25-02-2019
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-29
      • 1970-01-01
      • 2020-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多