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

如何在Python中实现Pandas的特殊左连接以生成指定结果集

实现指定DataFrame整合需求的解决方案

你需要整合两个DataFrame,保留所有cod字段在两个表中都存在的记录,并为每个(date, cod, Zone)组合补全缺失的收入字段(无对应数据则填0)。下面是一步步的实现方案:

核心思路

  1. 先筛选出两个表中共有的cod值,只处理这些cod的记录
  2. 收集两个表中所有可能的(date, cod, Zone)组合(去重)
  3. 分别将这些组合与两个表的收入数据左连接,缺失值填充为0
  4. 整理数据类型并排序,匹配期望输出格式

完整代码实现

import pandas as pd

# 定义原始数据
data1 = {'date': ['2021-06', '2021-06', '2021-07', '2021-07', '2021-07', '2021-07'], 
         'cod': ['12', '12', '14', '15', '15', '18'], 
         'Zone': ['LA', 'NY', 'LA', 'NY', 'PARIS', 'PARIS'], 
         'Revenue_Radio': [10, 20, 30, 50, 40, 10]}
df_1 = pd.DataFrame(data1)

data2 = {'date': ['2021-06', '2021-06', '2021-07', '2021-07', '2021-08'], 
         'cod': ['12', '14', '15', '15', '18'], 
         'Zone': ['PARIS', 'NY', 'LA', 'NY', 'NY'], 
         'Revenue_Str': [10, 20, 30, 50, 5]}
df_2 = pd.DataFrame(data2)

# 步骤1:获取两个表共有的cod值
common_cods = set(df_1['cod']).intersection(set(df_2['cod']))

# 步骤2:筛选出两个表中属于共有cod的记录,只保留需要的字段
df_1_filtered = df_1[df_1['cod'].isin(common_cods)][['date', 'cod', 'Zone', 'Revenue_Radio']]
df_2_filtered = df_2[df_2['cod'].isin(common_cods)][['date', 'cod', 'Zone', 'Revenue_Str']]

# 步骤3:收集所有唯一的(date, cod, Zone)组合
all_combinations = pd.concat([df_1_filtered[['date', 'cod', 'Zone']], df_2_filtered[['date', 'cod', 'Zone']]]).drop_duplicates()

# 步骤4:左连接两个表的收入数据,缺失值填充为0
df_result = all_combinations.merge(df_1_filtered, on=['date', 'cod', 'Zone'], how='left').fillna(0)
df_result = df_result.merge(df_2_filtered, on=['date', 'cod', 'Zone'], how='left').fillna(0)

# 步骤5:转换为整数类型并排序,匹配期望输出格式
df_result['Revenue_Radio'] = df_result['Revenue_Radio'].astype(int)
df_result['Revenue_Str'] = df_result['Revenue_Str'].astype(int)
df_result = df_result.sort_values(by=['date', 'cod', 'Zone']).reset_index(drop=True)

# 查看最终结果
print(df_result)

结果验证

运行上述代码后,得到的df_result和你提供的期望输出完全一致:

  • 包含所有来自df_1和df_2的共有cod的(date,cod,Zone)组合
  • 不存在的收入字段自动填充为0
  • 排序后的顺序与期望输出匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 19:33:10