Python Pandas读取Excel日期数据的异常处理方法


Posted in Python onFebruary 28, 2022

异常描述

有时我们的Excel有一个调整过自定义格式的日期字段:

Python Pandas读取Excel日期数据的异常处理方法

当我们用pandas读取时却是这样的效果:

Python Pandas读取Excel日期数据的异常处理方法

不管如何指定参数都无效。

出现原因

没有使用系统内置的日期单元格格式,自定义格式没有对负数格式进行定义,pandas读取时无法识别出是日期格式,而是读取出单元格实际存储的数值。

Python Pandas读取Excel日期数据的异常处理方法

解决方案:修改自定义格式

可以修改为系统内置的自定义格式:

Python Pandas读取Excel日期数据的异常处理方法

或者在自定义格式上补充负数的定义:

Python Pandas读取Excel日期数据的异常处理方法

增加;@即可

pandas直接解析Excel数值为日期

有时这种Excel很多,我们需要通过pandas批量读取,挨个人工修改Excel的自定义格式费时费力,下面我演示如何使用pandas直接解析这些数值成为日期格式。

excel中常规格式和日期格式的转换规则如下:

1900/1/1为起始日期,转换的数字是1,往后的每一天增加1

1900/1/2转换为数字是 2

1900/1/3转换为数字是 3

1900/1/4转换为数字是 4

以此类推

excel中时间转换规则如下:

在时间中的规则是把1天转换为数字是 1

每1小时就是 1/24

每1分钟就是 1/(24×60)=1/1440

每1秒钟就是 1/(24×60×60)=1/86400

根据Excel的日期存储规则,我们只需要以1900/1/1为基准日期,根据数值n偏移n-1天即可得到实际日期。不过还有个问题,Excel多存储了1900年2月29日这一天,而正常的日历是没有这一天的,而我们的日期又都是大于1900年的,所以应该偏移n-2天,干脆使用1899年12月30日作为基准,这样不需要作减法操作。

解析代码如下:

import pandas as pd
from pandas.tseries.offsets import Day

df = pd.read_excel("日期.xlsx")
basetime = pd.to_datetime("1899/12/30")
df.日期 = df.日期.apply(lambda x: basetime+Day(x))
df.日期 = df.日期.apply(lambda x: f"{x.month}月{x.day}日")
df.head()
  日期
0 6月8日
1 6月9日
2 6月10日
3 6月11日
4 6月12日

如果需要调用time的strftime方法,由于包含中文则需要设置locale:

import pandas as pd
from pandas.tseries.offsets import Day
import locale
locale.setlocale(locale.LC_CTYPE, 'chinese')

df = pd.read_excel("日期.xlsx")
basetime = pd.to_datetime("1899/12/30")
df.日期 = df.日期.apply(lambda x: basetime+Day(x))
df.日期 = df.日期.dt.strftime('%Y年%m月%d日')
df.head()
  日期
0 2021年06月08日
1 2021年06月09日
2 2021年06月10日
3 2021年06月11日
4 2021年06月12日

总结 

到此这篇关于Python Pandas读取Excel日期数据的异常处理的文章就介绍到这了,更多相关Pandas读取Excel日期数据内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python 中文字符串的处理实现代码
Oct 25 Python
使用wxpython实现的一个简单图片浏览器实例
Jul 10 Python
python制作websocket服务器实例分享
Nov 20 Python
Python面向对象编程之继承与多态详解
Jan 16 Python
Django分页查询并返回jsons数据(中文乱码解决方法)
Aug 02 Python
详解python深浅拷贝区别
Jun 24 Python
Python使用字典实现的简单记事本功能示例
Aug 15 Python
python自动化UI工具发送QQ消息的实例
Aug 27 Python
python+jinja2实现接口数据批量生成工具
Aug 28 Python
Python爬虫爬取糗事百科段子实例分享
Jul 31 Python
Python限制内存和CPU使用量的方法(Unix系统适用)
Aug 04 Python
Django用户认证系统如何实现自定义
Nov 12 Python
pytorch中的torch.nn.Conv2d()函数图文详解
Feb 28 #Python
python3中apply函数和lambda函数的使用详解
Feb 28 #Python
你需要掌握的20个Python常用技巧
Feb 28 #Python
python opencv将多个图放在一个窗口的实例详解
pandas中关于apply+lambda的应用
Feb 28 #Python
Python中的datetime包与time包包和模块详情
Feb 28 #Python
Python 数据可视化神器Pyecharts绘制图像练习
You might like
PHP实现bitmap位图排序与求交集的方法
2016/07/28 PHP
thinkphp5 migrate数据库迁移工具
2018/02/20 PHP
js 操作select相关方法函数
2009/12/06 Javascript
遨游,飞飞,IE,空中网 浏览器无提示关闭方法
2011/07/11 Javascript
JAVASCRIPT车架号识别/验证函数代码 汽车车架号验证程序
2012/01/08 Javascript
用js实现in_array的方法
2013/11/05 Javascript
jQuery无刷新切换主题皮肤实例讲解
2015/10/21 Javascript
个人网站留言页面(前端jQuery编写、后台php读写MySQL)
2016/05/03 Javascript
JavaScript绑定事件监听函数的通用方法
2016/05/14 Javascript
Vue-cli 使用json server在本地模拟请求数据的示例代码
2017/11/02 Javascript
vue webpack打包优化操作技巧
2018/02/22 Javascript
JQuery选中select组件被选中的值方法
2018/03/08 jQuery
JS实现的文件拖拽上传功能示例
2018/05/21 Javascript
vue权限管理系统的实现代码
2019/01/17 Javascript
你或许不知道的一些npm实用技巧
2019/07/04 Javascript
Element-ui DatePicker显示周数的方法示例
2019/07/19 Javascript
前端插件之Bootstrap Dual Listbox使用教程
2019/07/23 Javascript
Vue 中 a标签上href无法跳转的解决方式
2019/11/12 Javascript
JS常见错误(Error)及处理方案详解
2020/07/02 Javascript
JavaScript常用工具函数汇总(浏览器环境)
2020/09/17 Javascript
vue.js页面加载执行created,mounted的先后顺序说明
2020/11/07 Javascript
[36:37]2014 DOTA2华西杯精英邀请赛5 24 VG VS iG
2014/05/25 DOTA
用Python实现换行符转换的脚本的教程
2015/04/16 Python
pandas 数据实现行间计算的方法
2018/06/08 Python
python 批量解压压缩文件的实例代码
2019/06/27 Python
Python Sympy计算梯度、散度和旋度的实例
2019/12/06 Python
matplotlib基础绘图命令之errorbar的使用
2020/08/13 Python
python安装sklearn模块的方法详解
2020/11/28 Python
捷克玩具商店:Bambule
2019/02/23 全球购物
校园之声广播稿
2014/01/31 职场文书
《蓝色的树叶》教学反思
2014/02/24 职场文书
村党支部对照检查材料思想汇报
2014/09/28 职场文书
档案管理员岗位职责
2015/02/12 职场文书
2015年中秋节演讲稿
2015/03/20 职场文书
position:sticky 粘性定位的几种巧妙应用详解
2021/04/24 HTML / CSS
如何更改Win11声音输出设备?Win11声音输出设备四种更改方法
2022/04/08 数码科技