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

如何使用另一个DataFrame替换pandas DataFrame末尾的指定条数数据

可行实现方案

你要的效果可以通过切片+拼接直接实现,无需用update方法,核心逻辑是截取df前半部分保留内容,再拼接df2的替换内容即可:

单用户场景(即你给出的示例场景)

import pandas as pd

# 你的原始数据
df = pd.DataFrame({'user': ['A', 'A', 'A', 'A', 'A'], 
                   'results': ['Rick', 'Patram', 'Pulis', 'Marie', 'Landon' ]})
df2 = pd.DataFrame({'user': ['A', 'A', 'A'], 
                   'results': ['John', 'Peter', 'Anne']}) 

# 核心执行代码
df = pd.concat([
    # 保留df前N行,N = 原df总长度 - df2的长度
    df.iloc[:len(df) - len(df2)],
    df2
], ignore_index=True)

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

多用户分组更新场景

如果你实际数据中存在多个不同user,需要按用户维度分别执行更新,可使用分组处理方案:

def update_single_user(group, df2_group_dict):
    current_user = group.name
    # 取当前用户对应的df2替换数据
    replace_part = df2_group_dict.get(current_user, pd.DataFrame(columns=group.columns))
    # 计算需要保留的当前用户前半部分行数
    keep_row_num = len(group) - len(replace_part)
    return pd.concat([group.iloc[:keep_row_num], replace_part], ignore_index=True)

# 先把df2按user分组存储为字典,方便查询
df2_group_dict = dict(tuple(df2.groupby('user')))
# 按user分组更新后合并结果
df = df.groupby('user', group_keys=False).apply(update_single_user, df2_group_dict=df2_group_dict)

内容的提问来源于stack exchange,提问作者isaac.af95

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 01:15:03