最近使用pandas遇到一个问题,从excel读取日期时因为是datetime类型,所以会是“年月日时分秒”格式,此时须用.dt.strftime(’%Y-%m-%d’)去掉时分秒;但存入excel文档时因为是datetime类型,excel又自动加上了时分秒。解决方法是使用.apply(str)方法在存入excel前把datetime类型转换为string类型,再对string进行切片。.apply()方法对于要批量处理单元格内容十分有用。
pandas练习代码如下:
import pandas as pd
file_path = '/Users/Administrator/Desktop/'
file_name = 'test.xls'
file = file_path + file_name
data = pd.read_excel(file,sheet_name = 'PLANNING',header=8)
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)
data['要求交货日期']=data['要求交货日期'].apply(str)
data['预计发货日期']=data['预计发货日期'].apply(str)
def request_date(x):
return x[0:10]
data['要求交货日期']=data['要求交货日期'].apply(request_date)
data['预计发货日期']=data['预计发货日期'].apply(request_date)
data.to_excel( '/Users/Administrator/Desktop/GKN_orders.xls',sheet_name='GKN',index=False)