一只小白自学中

Pandas练习(4)读取和写入excel表格时对日期格式的处理

最近使用pandas遇到一个问题,从excel读取日期时因为是datetime类型,所以会是“年月日时分秒”格式,此时须用.dt.strftime('%Y-%m-%d')去掉时分秒;但存入excel文档时因为是datetime类型,excel又自动加上了时分秒。解决方法是使用.apply(str)方法在存入excel前把datetime类型转换为string类型,再对string进行切片。.apply()方法对于要批量处理单元格内容十分有用。

pandas练习代码如下:

file_path = '/Users/Administrator/Desktop/'

file_name = 'test.xls'

file = file_path + file_name

data = pd.read_excel(file,sheet_name = 'PLANNING',header=8)

#打开指定的excel文件中指定的表,并从指定的行开始

data.dropna(axis=0,how='all')

#删除所有空行

data.rename(columns={'PURCHASE ORDER DATE': '下单日期', 

                     'PURCHASE ORDER #': '合同号', 

                     'PURCHASE ORDER LINE #': '行号',

                     'PART NUMBER': '客户型号',

                     'QTY ORDERED': '订单数量',

                     'REQUESTED NEED DATE': '要求交货日期',

                     'CHINA PO NUMBER': '订单号',

                     'ETD - China Date': '预计发货日期',

                     'QTY Shipped': '已发货数量',

                     'Balance to Ship': '剩余数量',

                     'ETA Elgin Arrival Date': '预计到港日期',

                     'China Shipment #': '唛头',

                     'Qty Shipped': '备注1',

                     'QTY OPEN ON PO': '备注2',

                     'Ship Date': '发货日期',

                     'INVOICE NO.': '发票号码',

                     'OPEN OR CLOSED': '状态',

                     'Unnamed: 17': '备注3'

                     }                

                     , inplace=True) 

#强制替换所有列名称

data['下单日期']=data['下单日期'].dt.strftime('%Y-%m-%d')

#只保留日期格式的年月日

data['下单日期']=data['下单日期'].apply(str)

#将datetime类型转换为string类型

data['要求交货日期']=data['要求交货日期'].apply(str)

data['预计发货日期']=data['预计发货日期'].apply(str)

def request_date(x):

    return x[0:10]

#定义string切片方法

data['要求交货日期']=data['要求交货日期'].apply(request_date)

data['预计发货日期']=data['预计发货日期'].apply(request_date)


data.to_excel( '/Users/Administrator/Desktop/GKN_orders.xls',sheet_name='GKN',index=False)

#存入excel文档,指定文件名,指定表明,不输出索引


评论

© Melody | Powered by LOFTER