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

如何匹配DataFrame索引与列值,更新目标列对应值?

问题描述

现有两个DataFrame:

df1

Count
Duliajan Area      2
HAPJAN             2
KATHALGURI         2

df2

Location           Category
0        NAGAJAN        0
1        JORAJAN        0
2     KATHALGURI        0
3         HEBEDA        0
4          MAKUM        0
5       BAREKURI        0
6        BAGHJAN        0
7  Duliajan Area        0
8      LANGKASHI        0
9         HAPJAN        0

需求:将df2中Location列的值与df1的索引匹配时,把对应行的Category列值替换为df1的Count值,其余行保持Category值为0,得到如下结果:

Location           Category
0        NAGAJAN        0
1        JORAJAN        0
2     KATHALGURI        2
3         HEBEDA        0
4          MAKUM        0
5       BAREKURI        0
6        BAGHJAN        0
7  Duliajan Area        2
8      LANGKASHI        0
9         HAPJAN        2
实现方法

方法1:使用map结合fillna

利用map方法将df2的Location映射到df1的Count值,再用fillna处理未匹配项:

df2['Category'] = df2['Location'].map(df1['Count']).fillna(0).astype(int)

map会根据Location的值匹配df1的索引,返回对应Count;未匹配项返回NaN,用fillna(0)替换为0,最后转成整数保证格式一致。

方法2:使用replace

先将df1的索引与Count转为字典,再批量替换:

replace_dict = df1['Count'].to_dict()
df2['Category'] = df2['Location'].replace(replace_dict).fillna(0).astype(int)

to_dict()生成以df1索引为键、Count为值的字典;replace会替换Location中匹配字典键的项,未匹配项用fillna(0)处理后转成整数。

方法3:使用merge

通过左连接合并两个DataFrame,再填充缺失值:

merged_df = df2.merge(df1, left_on='Location', right_index=True, how='left')
df2['Category'] = merged_df['Count'].fillna(0).astype(int)

左连接保留df2所有行,合并后Count列未匹配项为NaN,填充0后赋值给Category列即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 04:25:41