pandas - 如何将一列中存在的两种不同格式的日期时间值转换为一种格式?
问题描述
我有一列由两种格式组成:yyyymmdd(例如 20210513.0)和 5 位格式(例如 44351)。我希望这两种格式都转换为一种-"%d/%m/%Y"
我可以通过执行以下操作将 yyyymmdd 格式转换为所需的格式,
df['date'] = pd.to_datetime(df['date'], format='%Y%m%d', errors='coerce').dt.strftime("%d/%m/%Y")
但是这样做我会丢失 5 位数的日期。如何使用 pandas/python 将这两种格式转换为一种格式?
解决方案
您可以分别转换这两种格式,第二个用于转换 excel 样式日期时间unit
的origin
参数,然后用另一个日期时间替换缺失值Series.fillna
:
df = pd.DataFrame({'date':[20210513.0,44351.0]})
d1 = pd.to_datetime(df['date'], format='%Y%m%d', errors='coerce')
d2 = pd.to_datetime(df['date'], unit='D', origin='1899-12-30', errors='coerce')
df['date'] = d1.fillna(d2).dt.strftime("%d/%m/%Y")
print (df)
date
0 13/05/2021
1 04/06/2021
推荐阅读
- javascript - 使用 Kendo Grid - onclick 需要额外单击才能调用 jquery 方法
- neo4j - 在 Neo4J 中将字符串转换为多维数组
- algorithm - 给定n个矩形坐标,求k个矩形相交的区域面积?
- javascript - 如何使用 Fabric.js 和 ASP.Net Core SignalR 实现无网络绘图?
- python - TensorFlow:未使用 GPU,安装了 CUDA,但 GPU 似乎没有为 CUDA 启用
- wpf - core-3 是否有办法在 xaml 中定义 double 类型的实例,类似于在 .net 中使用 mscorlib?
- python - 使用带有 selenium 和 scrapy 实现的代理
- excel - 从网络下载文件后无法将文件保存到路径
- r - 使用 purrr::safely() 的输出
- google-cloud-functions - 如何使用 node.js 客户端对 Cloud Function 进行身份验证