【问题标题】:Date conversion of imported CSV [duplicate]导入的 CSV 的日期转换 [重复]
【发布时间】:2021-11-22 04:22:59
【问题描述】:

我有一个数据框,其中一些日期缩进如下:

1      20/09/2021 

5        11/9/2021

7         8/9/2021

8         7/9/2021

12     26/08/2021 
          ...     
813    28/08/2020 
814    28/08/2020 
815    26/08/2020 
816    26/08/2020 
817    23/08/2020 

在尝试传递pd.to_datetime 函数时,结果以不同的日期格式出现,如下所示:

1     2021-09-20>>>>> This is the right format that I want (yyyy-mm-dd)

5     2021-11-09 >>>>>Here the format has changed(yyyy-dd-mm)

7     2021-08-09

8     2021-07-09 >>>> 
12    2021-08-26
         ...    
813   2020-08-28
814   2020-08-28
815   2020-08-26
816   2020-08-26
817   2020-08-23

如果有人可以帮我解决这个问题?

【问题讨论】:

  • 请注意,日期 5、7 和 8 没有尾随零。那很可能是弄乱了格式。你能自己加零吗?如果是这样,我会尝试。

标签: python pandas datetime time-series


【解决方案1】:

问题是由于 CSV 文件中缺少月份 (dd/m/yyyy) 的 0 填充。

由于您的数据中只有 800 列,您只需在缺少的地方添加 0,然后调用 to_datetime

def fix_df(x)):
    return pd.to_datetime("/".join([i.zfill(2) for i in x.split("/")]),format="%d/%m/%Y")

并应用它

df.applymap(f)

【讨论】:

  • pd.to_datetime 与 format="%d/%m/%Y" 或 dayfirst=True (见我链接的欺骗)应该工作得很好(不需要零填充)。这里也不需要申请。例如:试试pd.to_datetime(["8/9/2021", "08/09/2021"], dayfirst=True)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-25
  • 2018-02-24
  • 2014-11-20
  • 2015-07-05
  • 2019-10-09
相关资源
最近更新 更多