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

合并按年/月/日/小时整数列存储日期的两个不等日期DataFrame

合并拆分日期列存储的不等范围DataFrame方案

你使用内连接的逻辑本身是符合需求的,出现hour列重复的问题,核心原因通常是原始DataFrame的连接键存在重复行,按以下步骤处理即可得到预期结果:

1. 问题原因

两个DataFrame执行多键合并时,只要任意一方的连接键['site','year','month','day','hour']存在重复值,就会出现一对多/多对多匹配,最终结果行就会膨胀,出现重复的hour值。

2. 解决代码

预处理+合并完整代码

# 定义连接键
join_cols = ['site', 'year', 'month', 'day', 'hour']

# 统一日期相关列的类型为整数,避免字符串和整数不匹配的问题
for col in join_cols[1:]:
    df1[col] = df1[col].astype(int)
    df2[col] = df2[col].astype(int)

# 对两个DataFrame按连接键去重,保留每个键的第一条记录(可根据业务需求调整keep参数为'last'等)
df1_distinct = df1.drop_duplicates(subset=join_cols, keep='first')
df2_distinct = df2.drop_duplicates(subset=join_cols, keep='first')

# 执行内连接
df3 = df1_distinct.merge(df2_distinct, on=join_cols, how='inner')

执行后得到的df3就和你预期的结果完全一致。

3. 额外排查项

如果处理后仍未得到预期结果,可检查site列是否存在隐藏空格:

df1['site'] = df1['site'].str.strip()
df2['site'] = df2['site'].str.strip()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 21:18:04