Python 读取 Excel 日期
在 Python 中读取 Excel 文件中的日期数据时,需要注意 Excel 和 Python 日期格式的差异,以下是几种常见的方法:
使用 pandas 读取 Excel
pandas 是处理 Excel 数据的常用库,它会自动将 Excel 日期转换为 Python 的 datetime 对象。
import pandas as pd
# 读取 Excel 文件
df = pd.read_excel('your_file.xlsx', sheet_name='Sheet1')
# 查看日期列
print(df['date_column'])
使用 openpyxl 读取 Excel
openpyxl 是另一个常用的 Excel 处理库,需要手动处理日期转换。
from openpyxl import load_workbook
# 加载工作簿
wb = load_workbook('your_file.xlsx')
ws = wb.active
# 获取日期值(Excel 日期序列数)
excel_date = ws['A1'].value
# 转换为 Python datetime
from datetime import datetime, timedelta
python_date = datetime(1900, 1, 1) + timedelta(days=excel_date - 2) # 减2是因为Excel的起始日期有差异
print(python_date)
使用 xlrd 读取 Excel(旧版 Excel)
xlrd 主要用于处理旧版 .xls 文件:
import xlrd
# 打开工作簿
wb = xlrd.open_workbook('your_file.xls')
sheet = wb.sheet_by_index(0)
# 获取日期值
excel_date = sheet.cell_value(0, 0)
# 转换为 Python datetime
if excel_date: # 确保不是空值
python_date = xlrd.xldate.xldate_as_datetime(excel_date, wb.datemode)
print(python_date)
处理日期格式问题
如果日期显示为数字或格式不正确,可以尝试以下方法:
# 使用 pandas 时指定日期列
df = pd.read_excel('your_file.xlsx', parse_dates=['date_column'])
# 或者手动转换
df['date_column'] = pd.to_datetime(df['date_column'])
处理不同日期系统
Excel 有两种日期系统:
- 1900 日期系统(Windows 默认)
- 1904 日期系统(Mac 默认)
在转换时需要注意:
# 对于 1904 日期系统 python_date = datetime(1904, 1, 1) + timedelta(days=excel_date)
常见问题解决
- 日期显示为数字:这是 Excel 内部存储方式,需要转换为 datetime 对象
- 时区问题:Excel 不存储时区信息,Python 默认为 naive datetime
- 1900/1904 系统差异:确保使用正确的转换公式
希望这些方法能帮助你正确处理 Excel 中的日期数据!
