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 isinstance判断对象类型
Sep 06 Python
利用Python脚本在Nginx和uwsgi上部署MoinMoin的教程
May 05 Python
使用Python进行二进制文件读写的简单方法(推荐)
Sep 12 Python
python利用matplotlib库绘制饼图的方法示例
Dec 18 Python
widows下安装pycurl并利用pycurl请求https地址的方法
Oct 15 Python
wxpython布局的实现方法
Nov 01 Python
python 读取数据库并绘图的实例
Dec 03 Python
django框架cookie和session用法实例详解
Dec 10 Python
Python实现AI自动抠图实例解析
Mar 05 Python
keras自动编码器实现系列之卷积自动编码器操作
Jul 03 Python
python爬虫基础之urllib的使用
Dec 31 Python
python中openpyxl和xlsxwriter对Excel的操作方法
Mar 01 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持久连接mysql_pconnect()函数使用介绍
2012/02/05 PHP
php jquery 多文件上传简单实例
2013/12/23 PHP
php数据结构之顺序链表与链式线性表示例
2018/01/22 PHP
thinkPHP5框架设置404、403等http状态页面的方法
2018/06/05 PHP
Js 获取HTML DOM节点元素的方法小结
2009/04/24 Javascript
js计算精度问题小结
2013/04/22 Javascript
JS.GetAllChild(element,deep,condition)使用介绍
2013/09/21 Javascript
浅谈Javascript 执行顺序
2013/12/18 Javascript
一看就懂:jsonp详解
2015/06/01 Javascript
JavaScript+CSS实现仿天猫侧边网页菜单效果
2015/08/25 Javascript
JavaScript实现带箭头标识的多级下拉菜单效果
2015/08/27 Javascript
AngularJS 中使用Swiper制作滚动图不能滑动的解决方法
2016/11/15 Javascript
jQuery点击头像上传并预览图片
2017/02/23 Javascript
微信小程序 图片加载(本地,网路)实例详解
2017/03/10 Javascript
解决linux下node.js全局模块找不到的问题
2018/05/15 Javascript
Vue-input框checkbox强制刷新问题
2019/04/18 Javascript
使用纯前端JavaScript实现Excel导入导出方法过程详解
2020/08/07 Javascript
vue将文件/图片批量打包下载zip的教程
2020/10/21 Javascript
Python中字典和集合学习小结
2017/07/07 Python
Python数据分析库pandas基本操作方法
2018/04/08 Python
Pycharm设置去除显示的波浪线方法
2018/10/28 Python
python进阶之多线程对同一个全局变量的处理方法
2018/11/09 Python
python3发送邮件需要经过代理服务器的示例代码
2019/07/25 Python
django foreignkey外键使用的例子 相当于left join
2019/08/06 Python
pyqt5 QScrollArea设置在自定义侧(任何位置)
2019/09/25 Python
Python验证码截取识别代码实例
2020/05/16 Python
纯css3制作的火影忍者写轮眼开眼至轮回眼及进化过程实例
2014/11/11 HTML / CSS
澳大利亚领先的武术用品和健身器材供应商:SMAI
2019/03/24 全球购物
会计自我鉴定范文
2013/10/06 职场文书
普通院校学生的自荐信
2013/11/27 职场文书
善意的谎言事例
2014/02/15 职场文书
经典安踏广告词
2014/03/21 职场文书
职业生涯规划书结束语
2014/04/15 职场文书
教师业务培训方案
2014/05/01 职场文书
安全生产年活动总结
2014/08/29 职场文书
MySQL 如何设计统计数据表
2021/06/15 MySQL