You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Pandas匹配两个日期格式不一致的Excel文件

实现同日期数据匹配对齐的代码修改方案

核心修改逻辑

  • 处理第一个Excel的带时分的时间列:转为pandas datetime格式后去除时分部分,格式化为和第二个Excel一致的8位数字日期
  • 处理第二个Excel的纯数字日期列:确保格式和第一个文件处理后的日期格式统一
  • 以统一格式的日期列为关联键,合并两个数据表完成同日期数据对齐

完整修改后代码

import os
from numpy import empty, percentile
import pandas as pd
from pandas.core.frame import DataFrame
from tkinter import Tk     # from tkinter import Tk for Python 3.x
from tkinter.filedialog import askopenfilename
import logging
import sys
import pathlib
from datetime import date, datetime

Tk().withdraw()

# 选择文件路径
filepathname1 = askopenfilename()
filepathname2 = askopenfilename()

print("你选择合并的文件为:", filepathname1, "和", filepathname2)

# 读取两个Excel文件
df1 = pd.read_excel(filepathname1, 'CWA107 Event', na_values=['NA'], usecols="A, B, F")
df2 = pd.read_excel(filepathname2)

df1.dropna(inplace=True)
df2.dropna(inplace=True)

# 过滤第一个Excel的所需数据
df1filt = df1[(df1['Händelseinfo'] == "Bränslenivåökning vid stillastående")]

print(df1filt)
print("加油次数:", len(df1filt))

# ------------------- 新增修改部分开始 -------------------
# 请替换下方两个引号内的内容为你两个Excel中实际存储时间的列名
df1_time_col = "替换为df1的时间列名"
df2_time_col = "替换为df2的时间列名"

# 处理df1的时间列:转datetime后去除时分,转为8位整数日期
df1filt['统一匹配日期'] = pd.to_datetime(df1filt[df1_time_col]).dt.strftime('%Y%m%d').astype(int)
# 处理df2的时间列:确保为8位整数格式,若本身已是整数可省略astype(int)步骤
df2['统一匹配日期'] = df2[df2_time_col].astype(int)

# 按统一日期列合并两个表,how参数可根据需求调整
# inner:仅保留两边都有的日期;left:保留df1所有日期;right:保留df2所有日期;outer:保留两边所有日期
merged_result = pd.merge(df1filt, df2, on='统一匹配日期', how='inner')

# 输出结果并保存为Excel
print("匹配对齐后的数据:")
print(merged_result)
merged_result.to_excel('同日期匹配结果.xlsx', index=False)
# ------------------- 新增修改部分结束 -------------------

input()

注意事项

  • 若第二个Excel的日期列本身是字符串格式的8位日期,可将两边处理后的格式都改为字符串,删掉.astype(int)即可,只要两边格式一致就能正常匹配
  • 若不需要保留原始的两个时间列,可在合并后用drop方法删除多余列

内容的提问来源于stack exchange,提问作者Leopold Wahlbeck

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 16:18:03