欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > python >内容正文

python

python3 readexcel pandas问题,使用python中的pandas中的read_excel函数将日期保留为字符串...

发布时间:2023/12/10 python 75 豆豆
生活随笔 收集整理的这篇文章主要介绍了 python3 readexcel pandas问题,使用python中的pandas中的read_excel函数将日期保留为字符串... 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

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()

在Python中使用pandas时,是否可以读取excel文件(格式:xls | xlsx)并将包含 date 或 date + time 值的列保留为 strings 而不是 auto-converting 为 datetime.datetime 或 timestamp 类型?

如果使用pandas无法做到这一点,有人会建议使用备用方法/库来读取xls | xlsx文件并将日期列值保留为字符串吗?

对于 pandas 解决方案,尝试 df.info() 和结果日期列类型如下所示:

>>> 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)

并且还尝试了pyexcel库,但它执行相同的自动魔术转换行为:

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'])))

)

总结

以上是生活随笔为你收集整理的python3 readexcel pandas问题,使用python中的pandas中的read_excel函数将日期保留为字符串...的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。