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

基于Harvest date合并两个DataFrame未达预期,求正确实现方法

解决Pandas DataFrame按日期匹配合并并保留左表所有行的问题

你需要的是左连接(left join),而非外连接(outer join)。外连接会保留两个表的所有行,而左连接会严格保留左表(即你的第一个DataFrame df1)的全部行,仅匹配右表中对应Harvest date的记录。

修正后的代码

import pandas as pd

# 读取两个DataFrame
df1 = pd.read_csv(r'C:\Flower_weight.csv')
df2 = pd.read_csv(r'C:\Analyses.csv', encoding='unicode_escape')

# 使用左连接合并,确保保留df1的所有行
merged_df = pd.merge(df1, df2, how="left", on="Harvest date")

# 输出合并结果
print(merged_df)

预期合并结果

Harvest dateRoomQuantityContentThc lvl
22.10.2021ABT1120flower10
21.11.2021ABT2100flower2
22.10.2021ABT110flower10
21.11.2021ABT22flower2

关键说明

  • how="left":核心参数,保证df1的每一行都被保留,即使df2中无对应日期的记录(若存在此类情况,对应Content和Thc lvl会显示为NaN)。
  • 日期格式一致性:如果合并后出现匹配失败(空值),需检查两个表的Harvest date格式是否完全一致,可统一转为datetime类型确保匹配准确:
    # 统一日期格式为datetime类型
    df1['Harvest date'] = pd.to_datetime(df1['Harvest date'], format='%d.%m.%Y')
    df2['Harvest date'] = pd.to_datetime(df2['Harvest date'], format='%d.%m.%Y')
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 18:05:21