假设文件叫做example.xlsx
时间列是A列
那么代码如下(相关用到的库,你可以pip install下)
import datetime
from dateutil import parser
from openpyxl import Workbook, load_workbook
old_format1 = "%Y-%m-%d %H:%M" #第一种格式
old_format2 = "%m/%d/%y %H:%M" #第二种格式
new_format = "%Y-%m-%d %H:%M" #新格式
wb = load_workbook(filename="example.xlsx")
ws = wb.active
for cell in ws['A']:
if cell.row == 1:
continue
# 使用dateutil模块解析日期
try:
date_obj = parser.parse(cell.value)
# 如果日期是第二种格式,将其转换为第一种格式
if cell.value[:1].isdigit():
cell.value = date_obj.strftime(new_format)
except ValueError:
pass
wb.save("example.xlsx")
不知道你这个问题是否已经解决, 如果还没有解决的话:问题标题: 如何将Python数据分析所使用的数据集中不同格式的日期进行统一和清洗?
问题内容: 我在进行Python数据分析时使用了一个数据集,其中包含了两种不同格式的时间数据,一种是年月日,另一种是日月年。我想要将这两种时间格式都转化为相同的格式以便于数据分析。请问应该如何处理?提示:可以使用什么工具或方法来达到这个目的。
解决方案:
import pandas as pd
# 读取数据集
df = pd.read_csv('data.csv')
# 遍历数据集,对其中的时间数据进行格式转化
for i in range(len(df)):
date_str = df.loc[i, 'date']
# 判断日期格式,进行格式转化
if '/' in date_str:
df.loc[i, 'date'] = pd.to_datetime(date_str, format='%Y/%m/%d')
else:
df.loc[i, 'date'] = pd.to_datetime(date_str, format='%Y-%m-%d')
# 检查转化结果
print(df.info())
print(df.head())
# 假设存在缺失值,用前一个值进行填充
df = df.fillna(method='ffill')
# 检查清洗结果
print(df.info())
print(df.head())
这样,我们就完成了数据集中不同格式的日期进行统一和清洗的操作。现在的时间数据已经全部转化为datetime格式,一致性更好,有利于后续的数据分析。