|
您的观察是正确的,我之前的代码确实有问题。对于特殊日期格式,我们需要更精确的处理方式。以下是修正后的代码,可以正确处理Excel中的日期计算:
import pandas as pd
# 读取Excel文件
df = pd.read_excel('your_file.xlsx', header=None)
# 分别处理两列日期
start_dates = pd.to_datetime(df.iloc[:, 0]) # 第一列作为起始日期
end_dates = pd.to_datetime(df.iloc[:, 1]) # 第二列作为终止日期
# 计算天数差
days_diff = (end_dates - start_dates).dt.days
# 将结果添加到原DataFrame
df[2] = days_diff
# 保存结果
df.to_excel('result.xlsx', index=False, header=False)
如果您的日期格式比较特殊,可能需要指定日期格式:
# 如果日期格式是"YYYY-MM-DD"
start_dates = pd.to_datetime(df.iloc[:, 0], format='%Y-%m-%d')
end_dates = pd.to_datetime(df.iloc[:, 1], format='%Y-%m-%d')
如果仍然有问题,可以先检查一下Excel中的日期是如何存储的:
print(df.head()) # 查看前几行数据
print(df.dtypes) # 查看数据类型
如果Excel中的日期是字符串格式,可能需要先清理数据:
# 去除可能的空格
df.iloc[:, 0] = df.iloc[:, 0].str.strip()
df.iloc[:, 1] = df.iloc[:, 1].str.strip()
如果日期是Excel的序列号格式(数字),可以使用:
from datetime import datetime, timedelta
excel_origin = datetime(1899, 12, 30) # Excel的起始日期
# 转换Excel序列号为日期
start_dates = [excel_origin + timedelta(days=x) for x in df.iloc[:, 0]]
end_dates = [excel_origin + timedelta(days=x) for x in df.iloc[:, 1]]
请根据您的实际情况选择合适的方法。如果仍有问题,可以提供更多关于日期格式的信息。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|