python - 混合日期格式更新
问题描述
这个链接有帮助,但并没有完全让我明白,或者更有可能我没有飞跃到那里。目前,混合日期“2021-04-15”、“04152021”、“04/15/2021”、“NaN/NULL”都存在于这些列中。
独立地,转换标准日期或整数没有问题。
FileDates = ['HIRE1','HIRE2','DATE3','DOB','DATE4','DATE5','DATE6','DATEn+x']
for c in FileDates:
df[c]=pd.to_datetime(df[c],errors = 'ignore')
import datetime
datetime.datetime.strptime('01012020','%m%d%Y').strftime('%m/%d/%Y')
'01/01/2020'
问题- 我应该如何或如何通过并重新格式化日期以在一两次通过时可读?我想我错过了一些基本的东西。
现在,通过所有“日期”更新,但如果我尝试更新整数日期,我会在意外格式 (m/d/y) 或为 Null 的格式上出错。
更新- 谢谢,此外以下链接很有帮助。 Pandas 使用许多不同的日期类型格式化日期时间
解决方案
如果您的格式列表仅包括“2021-04-15”、“04152021”、“04/15/2021”和“NaN/NULL”,并且您想将其转换为 ISO 格式,您可以试试这个:
def convert_datetime(input):
"""Try to parse a datetime as yyyy-mm-dd, dd/mm/yyyy and ddmmyyyy,
and convert it to ISO format"""
try:
return datetime.strptime(input, "%Y-%m-%d").isoformat()
except ValueError:
pass
try:
return datetime.strptime(input, "%d/%m/%Y").isoformat()
except ValueError:
pass
try:
return datetime.strptime(input, "%d%m%Y").isoformat()
except ValueError:
pass
# the input could not be parsed, return a default value
return None
如果您可能的格式也包含其中一种格式,但是月份和日期翻转了,那么您将遇到麻烦,并且您无法确定每次都正确解析日期。
推荐阅读
- reactjs - React + Typescript:使用具有可选泛型类型的函数的道具正确键入通用组件
- android - 使用jetpack compose时android studio gradle脚本中compileSdk和compileSdkVersion有什么区别
- elasticsearch - 最新 N 条记录上的 Elasticsearch 聚合
- php - 在 laravel 中动态确定 http/https
- reactjs - 在 reactJS 中从 IndexedDB 获取视频 URL
- rust - 创建递归枚举——我应该使用生命周期引用吗?(锈)
- python - Visual Studio Code 调试器不工作
- python - 我将如何正确实现异步任务?
- python - 我如何在第一个数据帧上运行一个循环,在第二个数据帧上运行一个内部循环,以计算他们的学科分数与学生之间的差异?
- matplotlib - 有没有办法在文本文件中操作数据,即更改值并绘制它们?