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翻译软件实现代码(使用google api完成)
Nov 26 Python
python进阶教程之模块(module)介绍
Aug 30 Python
在阿里云服务器上配置CentOS+Nginx+Python+Flask环境
Jun 18 Python
Python爬虫实现抓取京东店铺信息及下载图片功能示例
Aug 07 Python
Python操作Excel插入删除行的方法
Dec 10 Python
Python基础之条件控制操作示例【if语句】
Mar 23 Python
Python小白必备的8个最常用的内置函数(推荐)
Apr 03 Python
python多线程http压力测试脚本
Jun 25 Python
python scatter函数用法实例详解
Feb 11 Python
Python argparse模块使用方法解析
Feb 20 Python
90行Python代码开发个人云盘应用
Apr 20 Python
Python first-order-model实现让照片动起来
Jun 25 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.ini中的php-5.2.0配置指令详解
2008/03/27 PHP
PHP中MD5函数使用实例代码
2008/06/07 PHP
php session 预定义数组
2009/03/16 PHP
PHP页面转UTF-8中文编码乱码的解决办法
2015/10/20 PHP
巧妙破除网页右键禁用的十大绝招
2006/08/12 Javascript
javascript 写类方式之三
2009/07/05 Javascript
浅析jQuery中常用的元素查找方法总结
2013/07/04 Javascript
js判断屏幕分辨率的代码
2013/07/16 Javascript
JQuery遍历DOM节点的方法
2015/06/11 Javascript
jQuery获取多种input值的简单实现方法
2016/06/20 Javascript
Vue.js手风琴菜单组件开发实例
2017/05/16 Javascript
使用RN Animated做一个“添加购物车”动画的方法
2018/09/12 Javascript
javascript 原型与原型链的理解及应用实例分析
2020/02/10 Javascript
微信小程序基于ColorUI构建皮皮虾短视频去水印组件
2020/11/04 Javascript
[02:22]《新闻直播间》2017年08月14日
2017/08/15 DOTA
python中Flask框架简单入门实例
2015/03/21 Python
python安装以及IDE的配置教程
2015/04/29 Python
python图像处理之镜像实现方法
2015/05/30 Python
Python文件操作,open读写文件,追加文本内容实例
2016/12/14 Python
利用python计算windows全盘文件md5值的脚本
2019/07/27 Python
Python并发爬虫常用实现方法解析
2020/11/19 Python
CSS3+DIV实现漂亮的动画彩色标签
2016/06/16 HTML / CSS
美国蔬菜和植物种子公司:Burpee
2017/02/01 全球购物
高中军训感言400字
2014/02/24 职场文书
小学生家长寄语
2014/04/02 职场文书
服务标兵事迹材料
2014/05/04 职场文书
巾帼建功标兵事迹材料
2014/05/11 职场文书
服装设计师求职信
2014/06/04 职场文书
党员反对四风思想汇报范文
2014/10/25 职场文书
销售员态度差检讨书
2014/10/26 职场文书
小学生作文评语集锦
2014/12/25 职场文书
网上祭英烈活动总结
2015/02/04 职场文书
在职证明范本
2015/06/15 职场文书
党员廉政准则心得体会
2016/01/20 职场文书
公司晚会主持词
2019/04/17 职场文书
超级详细实用的pycharm常用快捷键
2021/05/12 Python