导入的 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 的日期转换 [重复]的主要内容,如果未能解决你的问题,请参考以下文章