pandas 读取 excel 表时 日期变成了数字
如题所示。 读取到excel表的某列是日期; 打印时会输入成 5位的数字;有什么办法 可以转来字符串?给部分数据看看
如图 maxliu06 发表于 2020-8-17 11:46
如图
Excel上是默认常规格式存储,如果不是文本存储的,可以用xldate_as_datetime()来转换为时间格式。 读的时候,用dtype={列名:'datetime'}这样转换成日期类型不行么? 疾风怪盗 发表于 2020-8-17 13:26
读的时候,用dtype={列名:'datetime'}这样转换成日期类型不行么?
是指在 pandas 读取excel 数据时, 指定该参数吗?
yhhpf 发表于 2020-8-17 13:05
Excel上是默认常规格式存储,如果不是文本存储的,可以用xldate_as_datetime()来转换为时间格式。
咋用 {:5_99:} maxliu06 发表于 2020-8-17 13:42
咋用
import xlrd
data = xlrd.open_workbook('1.xlsx')
table = data.sheet_by_name('Sheet1')
cell_value1 = table.cell(0,0).value
print(cell_value1)
cell_value2 = xlrd.xldate.xldate_as_datetime(table.cell(0,0).value, 1)
print(cell_value2)
输出结果如下:
44060.0
2024-08-18 00:00:00 可以使用table.cell(i,j).ctype
或者
type(table.cell_value(i, j)来判断数据类型。
数字一律按浮点型输出,日期输出成一串小数,布尔型输出0或1,所以必须在程序中做判断处理转换成想要的数据类型
xlrd的数据类型有:
0 empty,
1 string,
2 number,
3 date,
4 boolean,
5 error yhhpf 发表于 2020-8-17 14:10
可以使用table.cell(i,j).ctype
或者
type(table.cell_value(i, j)来判断数据类型。
我是想用pandas 不是xlrd 或者反过来, 5位数字 转来 月 日 的格式, 用python 有没有法子的?? 本帖最后由 BIO-张磊 于 2020-8-17 15:05 编辑
定义一个函数
def date(para):
delta = pd.Timedelta(str(para)+'days')
time = pd.to_datetime('1899-12-30') + delta
return time
之后使用apply函数,将这个函数传进去
df['销售日期'].apply(date) 本帖最后由 yhhpf 于 2020-8-17 16:14 编辑
pandas没试过这个,
你可以试下,excel记录日期数值格式,其实都是按照1900/1/0这个往后+日期数值(多少天),显示成对应的天数。 maxliu06 发表于 2020-8-17 14:17
或者反过来, 5位数字 转来 月 日 的格式, 用python 有没有法子的??
17楼给的函数是对的,或者也可以用datetime来处理
import pandas as pd
import datetime
def checkdatetime(number):
date1 = datetime.datetime(1900, 1, 1)#excel存储日期的基准日
print(date1)
date2 = date1 + datetime.timedelta(days=int(number) - 2)#调整日期
print(date2)
return date2
def date(para):
delta = pd.Timedelta(str(int(para)-2)+'days')
print(delta)
time = pd.to_datetime('1900-1-1') + delta
print(time)
return time
a=pd.read_excel('4.xlsx')
print(a.info())
print(a)
a['销售日期']=]
print(a)
页:
[1]