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 相关文章推荐
jupyter安装小结
Mar 13 Python
python 接口测试response返回数据对比的方法
Feb 11 Python
Python中将变量按行写入txt文本中的方法
Apr 03 Python
Python实现的端口扫描功能示例
Apr 08 Python
Python设计模式之外观模式实例详解
Jan 17 Python
python中bytes和str类型的区别
Oct 21 Python
Tensorflow设置显存自适应,显存比例的操作
Feb 03 Python
初学者学习Python好还是Java好
May 26 Python
Python如何对XML 解析
Jun 28 Python
Python如何急速下载第三方库详解
Nov 02 Python
Python request post上传文件常见要点
Nov 20 Python
安装python依赖包psycopg2来调用postgresql的操作
Jan 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版)
2011/06/08 PHP
将word转化为swf 如同百度文库般阅读实现思路及代码
2013/08/09 PHP
CI框架中类的自动加载问题分析
2016/11/21 PHP
PHP+Ajax实现上传文件进度条动态显示进度功能
2018/06/04 PHP
javascript十个最常用的自定义函数(中文版)
2009/09/07 Javascript
javaScript中with函数用法实例分析
2015/06/08 Javascript
纯css实现窗户玻璃雨滴逼真效果
2015/08/23 Javascript
值得分享的Bootstrap Ace模板实现菜单和Tab页效果
2015/12/30 Javascript
基于javascript实现九九乘法表
2016/03/27 Javascript
详解Javascript数据类型的转换规则
2016/12/12 Javascript
使用D3.js制作图表详解
2017/08/13 Javascript
微信小程序导航栏跟随滑动效果的实现代码
2019/05/14 Javascript
js实现漂亮的星空背景
2019/11/01 Javascript
Vue前端项目部署IIS的实现
2020/01/06 Javascript
Vue实现input宽度随文字长度自适应操作
2020/07/29 Javascript
利用Psyco提升Python运行速度
2014/12/24 Python
Python创建二维数组实例(关于list的一个小坑)
2017/11/07 Python
人机交互程序 python实现人机对话
2017/11/14 Python
python实现求最长回文子串长度
2018/01/22 Python
Python操作MySQL模拟银行转账
2018/03/12 Python
python实现控制台打印的方法
2019/01/12 Python
python 将日期戳(五位数时间)转换为标准时间
2019/07/11 Python
python实现猜拳小游戏
2020/04/05 Python
python使用python-pptx删除ppt某页实例
2020/02/14 Python
朗仕(Lab series)英国官网:雅诗兰黛集团男士专属护肤品牌
2017/11/28 全球购物
理肤泉英国官网:La Roche-Posay英国
2019/01/14 全球购物
几个数据库方面的面试题
2016/07/01 面试题
公司开业庆典主持词
2014/03/21 职场文书
国际贸易毕业生自荐书
2014/06/22 职场文书
本科毕业生应聘求职信
2014/07/06 职场文书
小学竞选班干部演讲稿
2014/08/20 职场文书
房贷工资证明范本
2015/06/12 职场文书
2016七一建党节慰问信
2015/11/30 职场文书
《卧薪尝胆》读后感3篇
2019/12/26 职场文书
详解Go语言Slice作为函数参数的使用
2021/07/02 Golang
拙作再改《我的收音机情缘》
2022/04/05 无线电