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

如何在Pandas中为DF1指定行批量赋值DF2对应列数据(无需显式指定列)

解决方案

这其实很容易实现,核心思路是先让DF2的索引和你要替换的DF1目标行索引对应上,然后利用pandas的索引对齐特性直接赋值就行,完全不用显式指定列,完美贴合你想要的DF1[7,12] = DF2的写法思路。

关键步骤代码

# 先把DF2的索引设置为你要替换的DF1行索引:7和12
df2.index = [7, 12]
# 通过索引定位赋值,pandas会自动匹配列名完成替换
df1.loc[df2.index] = df2

完整示例代码

下面是包含数据创建、替换操作和结果验证的完整代码:

import pandas as pd

# 创建你给出的DF1(注意这里要把DF1的索引设置为你示例里的行标识:12、3、5、7)
data_df1 = {
    'col1': [12, 3, 5, 7],
    'col2': ['v1', 'v3', 'v5', 'v10'],
    'col3': ['v12', 'v13', 'v14', 'v15']
}
df1 = pd.DataFrame(data_df1, index=[12, 3, 5, 7])

# 创建DF2
data_df2 = {
    'col2': ['x1', 'x2'],
    'col3': ['y2', 'y1']
}
df2 = pd.DataFrame(data_df2)

# 调整DF2的索引,和DF1中要替换的行索引对齐
df2.index = [7, 12]

# 执行替换操作
df1.loc[df2.index] = df2

# 查看结果
print(df1)

执行结果

运行后输出的DF1就是你期望的结果:

col1 col2 col3
12     12   x2   y1
3       3   v3  v13
5       5   v5  v14
7       7   x1   y2

原理说明

  • pandas在赋值时会自动根据列名和索引进行对齐,所以只要DF2的索引是你要替换的DF1行索引,列名和DF1的对应列一致,就会精准替换目标行的对应列值,完全不需要手动指定列名。
  • 如果DF1有额外的列(比如示例中的col1),这些列的值会保持不变,因为DF2中没有对应的列,pandas不会修改它们。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:07:21