熊猫,将日期时间格式 mm/dd/yyyy 转换为 dd/mm/yyyy

新手上路,请多包涵

csv 的默认格式是 dd/mm/yyyy。当我通过 df['Date']=pd.to_datetime(df['Date']) 将其转换为日期时间时,它会将格式更改为 mm//dd/yyyy。

然后,我使用 df['Date'] = pd.to_datetime(df['Date']).dt.strftime('%d/%m/%Y') 转换为 dd/mm/yyyy,但是,它们是字符串(对象)格式。但是,我需要将它们更改为 datetime 格式。当我再次使用这个( df['Date']=pd.to_datetime(df['Date']) )时,它会恢复到以前的格式。需要你的帮助

原文由 Amn Kh 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

您可以使用 parse_datesdayfirst 参数 pd.read_csv ,请参阅: read_csv() 的文档

df = pd.read_csv('myfile.csv', parse_dates=['Date'], dayfirst=True)

这会将 Date 列读取为日期时间值,正确地将日期输入的第一部分作为日期。请注意,通常您会希望将日期存储为日期时间对象。

然后,如果您需要将日期输出为字符串,您可以调用 dt.strftime()

 df['Date'].dt.strftime('%d/%m/%Y')

原文由 rje 发布,翻译遵循 CC BY-SA 4.0 许可协议

此解决方案适用于列具有混合日期格式的所有情况。如果需要,向函数添加更多条件。 Pandas to_datetime() 函数对我不起作用,但这似乎效果很好。

 import date
def format(val):
    a = pd.to_datetime(val, errors='coerce', cache=False).strftime('%m/%d/%Y')
    try:
        date_time_obj = datetime.datetime.strptime(a, '%d/%m/%Y')
    except:
        date_time_obj = datetime.datetime.strptime(a, '%m/%d/%Y')
    return date_time_obj.date()

将更改保存到同一列。

 df['Date'] = df['Date'].apply(lambda x: format(x))

另存为 CSV。

 df.to_csv(f'{file_name}.csv', index=False, date_format='%s')

原文由 SummmerFort 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题