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

如何在Python不同形状DataFrame间实现类Excel Index&Match功能并更新数据

实现类似Excel Index+Match的DataFrame更新功能

完全可以实现这个需求,下面用Pandas给出具体解法:

1. 构造示例数据

先模拟你提到的两个DataFrame:

import pandas as pd

# df1:x列是df2的列名,y列有重复,z是要更新的值
df1 = pd.DataFrame({
    'x': ['a', 'b', 'a'],
    'y': ['y1', 'y2', 'y1'],
    'z': [10, 20, 30]
})

# df2:y列无重复,包含df1x列对应的列(a、b)
df2 = pd.DataFrame({
    'y': ['y1', 'y2', 'y3'],
    'a': [0, 0, 0],
    'b': [0, 0, 0],
    'c': [0, 0, 0]
})

2. 处理df1的重复y值

因为df1的y列存在重复,需要先确定重复时保留哪个z值(比如取最后一次出现的值,或者第一次):

# 按y和x去重,保留最后一条记录(可根据需求改成keep='first')
df1_clean = df1.drop_duplicates(subset=['y', 'x'], keep='last')

3. 转换df1格式匹配df2

把df1转换成以y为索引、x为列名的格式,和df2结构对齐:

df1_pivot = df1_clean.pivot(index='y', columns='x', values='z')

4. 更新df2数据

用Pandas的update方法,将df1_pivot的值同步到df2对应位置:

# 先把df2的y列设为索引,方便匹配
df2.set_index('y', inplace=True)
# 执行更新
df2.update(df1_pivot)
# 恢复y列为普通列(可选)
df2.reset_index(inplace=True)

执行后df2的结果:

yabc
0y13000
1y20200
2y3000

这个流程就对应Excel里Index+Match的逻辑:通过y列匹配行,通过x列匹配要更新的列,最终把z值填入对应位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 20:54:59