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单链表实现代码实例
Nov 21 Python
Python使用MySQLdb for Python操作数据库教程
Oct 11 Python
go和python变量赋值遇到的一个问题
Aug 31 Python
python机器学习实战之K均值聚类
Dec 20 Python
python中pylint使用方法(pylint代码检查)
Apr 06 Python
pandas获取groupby分组里最大值所在的行方法
Apr 20 Python
python2与python3中关于对NaN类型数据的判断和转换方法
Oct 30 Python
Python补齐字符串长度的实例
Nov 15 Python
tensorflow指定GPU与动态分配GPU memory设置
Feb 03 Python
总结Pyinstaller的坑及终极解决方法(小结)
Sep 21 Python
python爬虫爬取淘宝商品比价(附淘宝反爬虫机制解决小办法)
Dec 03 Python
Python find()、rfind()方法及作用
Dec 24 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中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
2012/09/07 PHP
php实现的单一入口应用程序实例分析
2015/09/23 PHP
php结合mysql与mysqli扩展处理事务的方法
2016/06/29 PHP
使用ThinkPHP生成缩略图及显示
2017/04/27 PHP
PHP框架Laravel中使用UUID实现数据分表操作示例
2018/05/30 PHP
Laravel如何自定义command命令浅析
2019/03/23 PHP
PHP数据对象映射模式实例分析
2019/03/29 PHP
javascript贪吃蛇完整版(源码)
2013/12/09 Javascript
Javascript Memoizer浅析
2014/10/16 Javascript
node.js中的fs.lstat方法使用说明
2014/12/16 Javascript
Zabbix添加Node.js监控的方法
2016/10/20 Javascript
jQuery密码强度验证控件使用详解
2017/01/05 Javascript
微信小程序 tabs选项卡效果的实现
2017/01/05 Javascript
Bootstrap笔记之缩略图、警告框实例详解
2017/03/09 Javascript
vue+Element-ui实现分页效果实例代码详解
2018/12/10 Javascript
vue路由守卫及路由守卫无限循环问题详析
2019/09/05 Javascript
解决layer 关闭当前弹窗 关闭遮罩层 input值获取不到的问题
2019/09/25 Javascript
原生Vue 实现右键菜单组件功能
2019/12/16 Javascript
Python3实现的爬虫爬取数据并存入mysql数据库操作示例
2018/06/06 Python
python实现批量修改图片格式和尺寸
2018/06/07 Python
python爬虫租房信息在地图上显示的方法
2019/05/13 Python
python3.4+pycharm 环境安装及使用方法
2019/06/13 Python
python 字段拆分详解
2019/12/17 Python
Python中remove漏删和索引越界问题的解决
2020/03/18 Python
Python实现常见的几种加密算法(MD5,SHA-1,HMAC,DES/AES,RSA和ECC)
2020/05/09 Python
Mytheresa美国官网:德国知名的女性奢侈品电商
2017/05/27 全球购物
美国花布包包品牌:Vera Bradley
2017/08/11 全球购物
c++工程师面试问题
2013/08/04 面试题
法学毕业生自荐信
2013/11/13 职场文书
工作疏忽检讨书
2014/01/25 职场文书
销售员求职个人的自我评价
2014/02/19 职场文书
美术课外活动总结
2014/07/08 职场文书
2015年七一建党节活动方案
2015/05/05 职场文书
民事代理词范文
2015/05/25 职场文书
2016年党员岗位承诺书
2016/03/24 职场文书
分享很少见很有用的SQL功能CORRESPONDING
2022/08/05 MySQL