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

基于id列合并Pandas DataFrame未获预期结果,求正确实现方法

基于ID列合并两个Pandas DataFrame的解决方案

先看你给出的DataFrame创建代码(修正注释表述):

import pandas as pd
# 整数列表
lst1 = [1,1,2,2,3]
# 字符串列表
lst2 = ["a","b","c"]

lst3 = [1]
# 字符串列表
lst4 = ["f"]

df1 = pd.DataFrame(list(zip(lst1, lst2)),
               columns =['id', 'str1'])
df2 = pd.DataFrame(list(zip(lst3, lst4)),
               columns =['id', 'str2'])

你需要保留df1中所有id=1的行,并将df2中id=1对应的str2值匹配到每一行。之前用merge/join/concat没得到预期结果,大概率是没指定左连接方式——默认的merge是内连接,只会保留两边共同存在的id行且仅匹配一次,而左连接会保留左表(df1)的所有行,右表(df2)中匹配到的内容对应填充,未匹配的则为NaN。

用左连接合并后,再过滤出id=1的行即可得到目标结果:

# 基于id列左连接两个DataFrame
merged_df = pd.merge(df1, df2, on='id', how='left')
# 筛选id为1的行并重置索引
final_df = merged_df[merged_df['id'] == 1].reset_index(drop=True)
print(final_df)

输出结果:

id str1 str2
0   1    a    f
1   1    b    f

注:你给出的预期结果里第一行的a1应为笔误,正确值是1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 10:53:20