Python DataFrame时间格式转换失败
将 列2015-04-07 08:35:00 转化为2015-04-07
代码如下,预览的print是成功的,但是写进Excel文件之后还是原来的
from pathlib import Path
import pandas as pd
import openpyxl # 打开表格
import datetime
from openpyxl import load_workbook
input_path = Path("D:\Pycharm\pythonTest\File") # 当前目录下的文件夹,可以直接输入文件夹名字,可以忽略以往的一长串路径
output_path = Path("D:\Pycharm\pythonTest\File") # 输入输出文件的路径如果相同,会是一个坑!文字有解释#
input_files = sorted(Path(input_path).glob("*.xlsx")) # 调取出所有xlsx为结尾的文件
# df = []
i = 0
for file in input_files:
df = pd.read_excel(file,
converters={"CLIENT_ID": str, "ORG_USCC": str, "REGNO": str, "GRID_UNIT_ID": str, "GRID_ID": str,"TEL": str, "GRIDUNIT_CYY_ID": str,
"REGISTER_DATE": str, "FOUND_DATE": str, "CREATE_DATE": str, "STATUS_DATE": str, "UPDATE_DATE": str})
# print(df["REGISTER_DATE"])
df['REGISTER_DATE'] = df.REGISTER_DATE.str.slice(0, 11)
df['REGISTER_DATE'] = pd.to_datetime(df.REGISTER_DATE, dayfirst=True)
df['FOUND_DATE'] = df.FOUND_DATE.str.slice(0, 11)
df['FOUND_DATE'] = pd.to_datetime(df.FOUND_DATE, dayfirst=True)
df['CREATE_DATE'] = df.CREATE_DATE.str.slice(0, 11)
df['CREATE_DATE'] = pd.to_datetime(df.CREATE_DATE, dayfirst=True)
df['STATUS_DATE'] = df.STATUS_DATE.str.slice(0, 11)
df['STATUS_DATE'] = pd.to_datetime(df.STATUS_DATE, dayfirst=True)
df['UPDATE_DATE'] = df.UPDATE_DATE.str.slice(0, 11)
df['UPDATE_DATE'] = pd.to_datetime(df.UPDATE_DATE, dayfirst=True)
# pd.set_option('display.max_columns', None)
# print(df.head())
# print(df['REGISTER_DATE'])
df.to_excel(str(i) + '.xlsx', index=False) # 如果不需要显示序列号,则index为False
i = i + 1
输出路径换一个其他目录试试
在使用pandas进行数据分析和处理时,需要把相同的DataFrame对象中的数据按顺序先后写入同一个Excel文件中的同一个工作表中,纵向追加。
方法一: 数据量小,把所有DataFrame对象的数据纵向合并到一起,然后再写入Excel文件,参考代码:
import pandas as pd
df = []
for ind in range(10):
data = pd.DataFrame(^_^) # dataframe数据
df.append(data)
df = pd.concat(df) # 合并所有数据
df.to_excel(file_name) # 写入excel文件
**方法二:**数据量较大时,DataFrame对象较多,每个DataFrame中的数据量都很大时,可以使用DataFrame对象方法to_excel()的参数startrow来控制每次写入的起始行位置。
import pd
# 创建写入器对象
writer = pd. ExcelWriter(file_name, engine= 'openpyxl')
# 第一个DataFrame对象写入的起始行位置
# 从第2行开始写,第一行保留为空行
start_row = 1
for i in range(500):
data= pd. DataFrame(data)
data.to_excel(writer, sheet_ name= 'sheet')
startrow=start_row, # 指定从哪一行开始写入数据,默认值为0
header=False,index=False) # 丢弃DataFrame对象的行标签和列标签
#修改下一次开始写入数据的行位置
start_row = start_row + data.shape[0]
#保存数据,关闭文件
writer.save()
write.close()