python read_excel converters_使用python中的大熊猫的read_excel函数将日期作为字符串

2023-11-18

Python 2.7.10

Tried pandas 0.17.1 -- function read_excel

Tried pyexcel 0.1.7 + pyexcel-xlsx 0.0.7 -- function get_records()

When using pandas in Python is it possible to read excel files (formats: xls|xlsx) and leave columns containing date or date + time values as strings rather than auto-converting to datetime.datetime or timestamp types?

If this is not possible using pandas can someone suggest an alternate method/library to read xls|xlsx files and leave date column values as strings?

For the pandas solution attempts the df.info() and resultant date column types are shown below:

>>> df.info()

Int64Index: 117 entries, 0 to 116

Columns: 176 entries, Mine to Index

dtypes: datetime64[ns](2), float64(145), int64(26), object(3)

memory usage: 161.8+ KB

>>> type(df['Start Date'][0])

Out[6]: pandas.tslib.Timestamp

>>> type(df['End Date'][0])

Out[7]: pandas.tslib.Timestamp

Attempt/Approach 1:

def read_as_dataframe(filename, ext):

import pandas as pd

if ext in ('xls', 'xlsx'):

# problem: date columns auto converted to datetime.datetime or timestamp!

df = pd.read_excel(filename) # unwanted - date columns converted!

return df, name, ext

Attempt/Approach 2:

import pandas as pd

# import datetime as datetime

# parse_date = lambda x: datetime.strptime(x, '%Y%m%d %H')

parse_date = lambda x: x

elif ext in ('xls', 'xlsx', ):

df = pd.read_excel(filename, parse_dates=False)

date_cols = [df.columns.get_loc(c) for c in df.columns if c in ('Start Date', 'End Date')]

# problem: date columns auto converted to datetime.datetime or timestamp!

df = pd.read_excel(filename, parse_dates=date_cols, date_parser=parse_date)

And have also tried pyexcel library but it does the same auto-magic convert behavior:

Attempt/Approach 3:

import pyexcel as pe

import pyexcel.ext.xls

import pyexcel.ext.xlsx

t0 = time.time()

if ext == 'xlsx':

records = pe.get_records(file_name=filename)

for record in records:

print("start date = %s (type=%s), end date = %s (type=%s)" %

(record['Start Date'],

str(type(record['Start Date'])),

record['End Date'],

str(type(record['End Date'])))

)

解决方案Using converters{'Date': str} option inside the pandas.read_excel which helps.

pandas.read_excel(xlsx, sheet, converters={'Date': str})

you can try convert your timestamp back to the original format

df['Date'][0].strftime('%Y/%m/%d')

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python read_excel converters_使用python中的大熊猫的read_excel函数将日期作为字符串 的相关文章

  • Python:Tornado框架之获取get和post的传参

    一 获取get方式传参 import tornado ioloop 导入tornado包 import tornado web class MainHandle tornado web RequestHandler def get self
  • number1(python)

    1抽 签 你的朋友提议玩一个游戏 将写有数字的 I个纸片放入口袋中 你可以从口袋中抽取 4 次纸 片 每次记下纸片上的数字后都将其放回口袋中 如果这 4 个数字的和是m 就是你赢 否 则就是你的朋友赢 你挑战了好几回 结果一次也没赢过 于是
  • 梦幻手游服务器维护摆摊公示时间,梦幻手游5月4日维护公告 摆摊交易优化

    亲爱的玩家朋友 为保证服务器的运行稳定和服务质量 梦幻西游 手游所有服务器将于2016年5月4日8 00停机 进行维护工作 预计维护时间为8 00 9 00 如果在预定时间内无法完成维护内容 开机时间也将继续顺延 请各位玩家相互转告 并提前
  • wm命令详解

    usage wm subcommand options wm size reset WxH WdpxHdp wm density reset DENSITY wm overscan reset LEFT TOP RIGHT BOTTOM w
  • Ubuntu操作系统学习笔记之安装和配置Apache2

    在Ubuntu中安装apache 安装指令 sudo apt get install apache2 安装结束后 产生的启动和停止文件是 etc init d apache2 启动 sudo apache2ctl k start 停止 su
  • C++的sort函数对于vector排序

    对于vector
  • llvm 介绍有用的网站

    LLVM笔记 7 指令的side effect LLVM笔记 7 指令的side effect Five100Miles 博客园 LLVM每日谈之十八 GEP Instruction的几点总结 LLVM每日谈之十八 GEP Instruct
  • 用docker搭建公司内部的gitlab 和 wiki

    docker run name gitlab d link gitlab postgresql postgresql link gitlab redis redisio publish 10022 22 publish 10080 80 e
  • 使用jasypt为springboot配置文件加密

    使用jasypt为配置文件加密 配置项明文可能出现的问题 先看一份典型的配置文件 配置MySQL数据库连接 spring datasource driver class name com mysql jdbc Driver spring d
  • 【为什么】C++中的#pragma once是干什么,和#include guard区别

    一 pragma once是C和C 编程语言中的一个非标准但广泛支持的预处理指令 用于使当前源文件在单次编译中只被包含一次 它与 include guards有相同的作用 但有一些优点 如 代码更少 避免名称冲突 有时可以提高编译速度 代码
  • Nim游戏

    Nim游戏 一共有N堆石子 编号从1到N 第i堆中有a i 个石子 有A和B两个人 依次拿石子 每次可以从任意堆中拿任意数量的石子 至少拿一颗 至多拿着一堆剩下的所有石子 两个人轮流行动 取光所有石子的一方获胜 最后一次拿石子的那一人获胜
  • Go语言切片详解

    文章一 Go语言切片基础 文章二 Go语言切片详解 文章三 Go Go 语言切片 Slice 文章四 Go基础 数组和切片 一个固定长度一个可变长度 文章五 Go语言自学系列 golang切片的初始化 文章六 go语言切片详解 初始化 扩容
  • 通用技术 关于线上监控的思考总结

    前言 近期和大佬们对规划 梳理新财年要做的事情 有非常重要的一项就是线上监控 对于线上监控 大家都最熟悉不过 凡是在生产环境上运行的系统 或多或少都会有监控 但是否有思考过哪些监控是有效的 监控的目的是什么 监控告警出来之后又是怎么的一轮操
  • C实现Unix时间戳和本地时间转化

    我们平常说时间都说的几点几分几秒 星期几 但是在计算机里面并不是直接使用我们所说的时间 而是使用Unix时间戳 这样不管是哪个平台 哪个系统 都可以根据自己对时间的定义进行转换 像Java PHP等都提供了接口来进行转化 C库里面也有这样的
  • MQ如何保证消息不丢失?

    MQ如何保证消息不丢失要从三个方面来考虑 1 生产者 生产者要确保消息投递到MQ服务端 可以使用手动ACK 消息确认机制 认为消息持久化到硬盘 才能够认为生产者投递成功 2 MQ服务端 需要将消息持久化到硬盘 3 消费者 消费者要确保消息消
  • 报错解决:A server error occurred. Please contact the administrator /gbk 9737

    简介 HTML网页显示如题报错 对应python终端显示的是如下错误 解决办法 1 打开报错显示的views debug py 找到如下代码 我这个是已经修改过的 只要找到这段就行 在open 中加入encoding utf 8 如下图 编
  • Linux 下Qt应用程序打包发布方法及踩过的坑

    写这篇文章主要是记录一下自己遇到的问题及解决办法 希望对遇到相同问题的你有所帮助 目的 我需要编写一份可以在服务器上运行的Qt代码 即需要在linux环境下将Qt应用程序打包将其放在服务器上运行 环境 服务器上ubantu版本20 04 1
  • C++中的Date类(日期类)

    C 中Date类用的比较多 所以通过查找参考 自己写了一个比较全面的Date类 直接上代码 头文件 h ifndef DATE H INCLUDED define DATE H INCLUDED include
  • Acticiti中startProcessInstanceByKey方法在variable表中的如何存储

    Acticiti中startProcessInstanceByKey方法在variable表中的如何存储 已知 在使用runtimeService startProcessInstanceByKey String processDefini

随机推荐