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

使用pandas outer外连接合并数据时如何避免丢失应用数据?

问题原因

你出现数据丢失的核心原因有两个:

  1. 关联键逻辑冗余且存在匹配风险:你将app_name加入了合并关联键,但app_id本身已经是应用的唯一标识,不需要额外用字符串类型的app_name做匹配,一旦两边app_name存在前后空格、字符拼写差异就会导致匹配失败,从你给出的示例数据看,df_active_users中「food delivery app」的字段值就存在多余空格的可能性。
  2. 字段选择不匹配:你在提取df_download的字段时没有包含app_name,如果坚持用app_name做关联键,右表缺失对应字段会导致匹配逻辑异常。

解决方法

直接使用业务上唯一的date+app_id作为合并关联键即可,不需要加入app_name,即可完整保留两边所有数据:

df_merged = pd.merge(
    df_active_users[['date', 'active_users', 'app_id', 'app_name']],
    df_download[['date', 'downloads', 'app_id']],
    on=['date', 'app_id'],
    how='outer'
)

如果需要校验两边app_name的一致性,可以用如下代码排查:

# 提取两个表的app_id和app_name映射关系
active_app_map = df_active_users[['app_id', 'app_name']].drop_duplicates()
download_app_map = df_download[['app_id', 'app_name']].drop_duplicates()
# 输出不一致的记录
check_df = pd.merge(active_app_map, download_app_map, on='app_id', how='outer', indicator=True)
print(check_df[check_df['_merge'] != 'both'])

如果存在不一致的情况,选择其中一个表的app_name作为标准保留即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:18:00