我使用Python以特定格式保存日期和日期时间列的数据,同时将其存储在CSV文件中。
但是,每当我在Microsoft Excel中打开该文件时,格式都会更改为Excel的默认格式。
有没有办法在保持csv格式的情况下解决这个问题?
谢谢
import pandas as pd
import os
from datetime import datetime
import csv
def convert_datetime(cell):
try:
if pd.notnull(cell):
return f"{datetime.strptime(f'{cell}', '%m/%d/%Y %I:%M:%S %p').strftime('%Y-%m-%d %H:%M:%S')}"
else:
return None
except ValueError:
return cell
def convert_date(cell):
try:
if pd.notnull(cell):
return f"{datetime.strptime(f'{cell}', '%m/%d/%Y').strftime('%Y-%m-%d')}"
else:
return None
except ValueError:
return cell
file_name = input("Enter the file name with extension (xlsx or csv): ")
if os.path.exists(file_name):
file_extension = file_name.split('.')[-1]
if file_extension == 'xlsx':
df = pd.read_excel(file_name, engine='openpyxl')
elif file_extension == 'csv':
df = pd.read_csv(file_name)
datetime_columns = ['created', 'created_date', 'modify_date']
date_columns = ['offers_expiry']
for col in date_columns:
if col in df.columns:
df[col] = df[col].fillna(pd.Timestamp.now())
df[col] = df[col].apply(convert_date)
for col in datetime_columns:
if col in df.columns:
df[col] = df[col].fillna(pd.Timestamp.now())
df[col] = df[col].apply(convert_datetime)
df[col] = df[col].apply(lambda x: x.replace(microsecond=0))
output_file_name = "modified_" + os.path.splitext(file_name)[0] + '.csv'
df.to_csv(output_file_name, index=False, header=False)
print(f"Modified file saved as {output_file_name}")
else:
print("File not found.")
1条答案
按热度按时间eh57zj3b1#
有没有办法在保持csv格式的情况下解决这个问题?
不幸的是没有。如果你想控制输出格式,你必须将你的数据导出为excel,用
ExcelWriter
设置格式。例如:输出遵循日期和日期时间格式: