【问题标题】:Making both day-first and month-first dates in a csv file day-first在 csv 文件中将第一天和第一个月的日期设为第一天
【发布时间】:2026-01-27 01:45:01
【问题描述】:

我有一个包含日期列的 csv 文件。日期是按月份顺序排列的——所以一月先到,然后是二月,依此类推。问题是某些日期采用 mm/dd/yyyy 格式,而其他日期采用 dd/mm/yyyy 格式。这是它的样子。

日期

01/08/2005
01/12/2005
15/01/2005
19/01/2005
22/01/2005
26/01/2005
29/01/2005
03/02/2005
05/02/2005

...

我想把它们都变成相同的格式(dd/mm/yyyy)

我正在使用 Python 和 pandas 来读取和编辑 csv 文件。我尝试使用 Excel 使用内置格式工具手动更改日期格式,但对于大量行似乎是不可能的。我正在考虑使用正则表达式,但我不太清楚如何区分月份优先和日期优先。

# here's what i have so far
date = df.loc[i, 'Date']

pattern = r'\d\d/\d\d/\d\d'        
match = re.search(pattern, date)  

if match:
    date_items = date.split('/')
    day = date_items[1]
    month = date_items[0]
    year = date_items[2]
    new_date = f'{dd}/{mm}/{year}'
    df.loc[i, 'Date'] = new_date

我希望 csv 最后具有统一的日期格式。

【问题讨论】:

    标签: python regex csv data-science


    【解决方案1】:

    简而言之:你不能!

    您无法知道 01/02/2019 是 1 月 2 日还是 2 月 1 日! 您的示例中的其他日期也是如此,例如:

    01/08/2005
    01/12/2005
    03/02/2005
    05/02/2005
    

    【讨论】:

    • 知道月份是有序的,也许?
    • 您可能可以根据上下文消除歧义,但逻辑肯定不简单,在某些情况下可能需要回溯,即使您最终可能会遇到无法解决的极端情况(如果上下文是不够的)。
    • 我们可以使用它们按月排列的事实吗?第一个日期总是在一月。
    • @L.B.有趣的想法,但如果你有 2019 年 1 月 2 日,然后是 2019 年 2 月 1 日,2019 年 3 月 1 日——即使它们按编年史顺序排序——你仍然无法告诉他们每个人是一月还是一月二月
    最近更新 更多