导入的 CSV 的日期转换 [重复]

Posted

技术标签:

【中文标题】导入的 CSV 的日期转换 [重复]【英文标题】:Date conversion of imported CSV [duplicate] 【发布时间】: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 没有尾随零。那很可能是弄乱了格式。你能自己加零吗?如果是这样,我会尝试。 【参考方案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)

以上是关于导入的 CSV 的日期转换 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

需要将日期时间转换为 dd/mm/yyyy [重复]

如何导入日期和转换时区?

使用SSIS包将csv列转换为表列的日期格式?

如何在熊猫中将字符串日期转换为数字[重复]

将我的日期列从 Excel 导入/转换为 SQL Server 中的日期时间数据类型?

Python将字符串转换为int [重复]