鱼C论坛

 找回密码
 立即注册
查看: 97|回复: 3

Python 批量处理Excel,终止日期-起始日期=天数?

[复制链接]
发表于 4 天前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x


比如2026-9-4减去2025-9-4等于365天
如何用代码实现?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 4 天前 | 显示全部楼层
解答:

要在Python中批量处理Excel文件并计算两个日期之间的天数差(例如2026-9-4减去2025-9-4),您可以使用pandas库来简化操作。以下是实现方法:

首先,确保安装了必要的库。如果未安装,请运行:
  1. pip install pandas openpyxl
复制代码


然后,使用以下代码示例。假设您的Excel文件中有“起始日期”和“终止日期”列(请根据实际列名调整):


  1. import pandas as pd

  2. # 读取Excel文件
  3. df = pd.read_excel('your_file.xlsx')

  4. # 转换日期列为datetime类型
  5. df['起始日期'] = pd.to_datetime(df['起始日期'])
  6. df['终止日期'] = pd.to_datetime(df['终止日期'])

  7. # 计算天数差:终止日期 - 起始日期
  8. df['天数差'] = (df['终止日期'] - df['起始日期']).dt.days

  9. # 保存结果到新Excel文件
  10. df.to_excel('output.xlsx', index=False)
复制代码


代码解释:
- 使用 pd.read_excel 读取Excel文件。
- 使用 pd.to_datetime 将日期字符串转换为datetime对象,便于计算。
- 计算差值并使用 .dt.days 提取天数。
- 使用 to_excel 保存结果,index=False 避免输出行索引。

对于批量处理多个Excel文件,可以使用循环遍历文件夹中的所有文件:


  1. import os
  2. import pandas as pd

  3. # 设置输入和输出文件夹路径
  4. input_folder = 'path/to/input/files'
  5. output_folder = 'path/to/output/files'

  6. # 遍历文件夹中的所有Excel文件
  7. for file_name in os.listdir(input_folder):
  8.     if file_name.endswith('.xlsx') or file_name.endswith('.xls'):
  9.         file_path = os.path.join(input_folder, file_name)
  10.         df = pd.read_excel(file_path)
  11.         
  12.         # 处理日期列(假设列名为“起始日期”和“终止日期”)
  13.         df['起始日期'] = pd.to_datetime(df['起始日期'])
  14.         df['终止日期'] = pd.to_datetime(df['终止日期'])
  15.         df['天数差'] = (df['终止日期'] - df['起始日期']).dt.days
  16.         
  17.         # 保存处理后的文件
  18.         output_path = os.path.join(output_folder, 'processed_' + file_name)
  19.         df.to_excel(output_path, index=False)
复制代码


注意事项:
- 确保Excel文件中的日期列格式正确,否则 pd.to_datetime 可能无法解析。如果日期格式特殊,可以指定格式参数,例如 pd.to_datetime(df['列名'], format='%Y-%m-%d')
- 如果列名不同,请替换代码中的“起始日期”和“终止日期”为实际列名。
- 批量处理时,输出文件会添加“processed_”前缀,以避免覆盖原文件。

这个方法是高效且易于理解的,适合处理大量数据。如果有更多细节需求,请提供具体文件结构以便进一步调整。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 4 天前 | 显示全部楼层
AttributeError: 'DatetimeProperties' object has no attribute 'days'. Did you mean: 'day'?

报错了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 4 天前 | 显示全部楼层
冰菲 发表于 2025-09-04 13:19
AttributeError: 'DatetimeProperties' object has no ...


您遇到的错误是因为代码中存在错误。让我提供一个修正后的解决方案:

错误原因分析:
1. 对同一列进行了两次转换,而且没有指定列名
2. 尝试从DatetimeProperties对象获取days属性,这是不正确的

以下是修正后的代码:


  1. import pandas as pd

  2. # 读取Excel文件
  3. df = pd.read_excel('your_file.xlsx')

  4. # 确保列名正确(根据实际情况修改)
  5. start_col = '起始日期'  # 替换为实际的起始日期列名
  6. end_col = '终止日期'   # 替换为实际的终止日期列名

  7. # 转换日期列为datetime类型
  8. df[start_col] = pd.to_datetime(df[start_col])
  9. df[end_col] = pd.to_datetime(df[end_col])

  10. # 计算天数差:终止日期 - 起始日期
  11. df['天数差'] = (df[end_col] - df[start_col]).dt.days

  12. # 保存结果到新Excel文件
  13. df.to_excel('output.xlsx', index=False)
复制代码


对于批量处理多个文件:


  1. import os
  2. import pandas as pd

  3. # 设置输入和输出文件夹路径
  4. input_folder = 'path/to/input/files'
  5. output_folder = 'path/to/output/files'

  6. # 确保输出文件夹存在
  7. os.makedirs(output_folder, exist_ok=True)

  8. # 列名设置(根据实际情况修改)
  9. start_col = '起始日期'
  10. end_col = '终止日期'

  11. # 遍历文件夹中的所有Excel文件
  12. for file_name in os.listdir(input_folder):
  13.     if file_name.endswith(('.xlsx', '.xls')):
  14.         file_path = os.path.join(input_folder, file_name)
  15.         df = pd.read_excel(file_path)
  16.         
  17.         # 处理日期列
  18.         df[start_col] = pd.to_datetime(df[start_col])
  19.         df[end_col] = pd.to_datetime(df[end_col])
  20.         
  21.         # 计算天数差
  22.         df['天数差'] = (df[end_col] - df[start_col]).dt.days
  23.         
  24.         # 保存处理后的文件
  25.         output_path = os.path.join(output_folder, 'processed_' + file_name)
  26.         df.to_excel(output_path, index=False)
复制代码


关键修正点:
1. 明确指定要转换的列名
2. 使用 .dt.days 从时间差对象中提取天数
3. 将结果保存为新列而不是覆盖原数据

如果您的Excel文件中的列名不同,请将代码中的 '起始日期''终止日期' 替换为实际的列名。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-8 12:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表