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

如何将一个DataFrame单元格文本值复制到另一个DataFrame单元格?

按ID匹配转移DataFrame单元格文本值的解决方案

你需要把dataframe1中text列的内容,对应到dataframe2里相同id的wordmatch列对吧?这是pandas里很常见的操作,给你几个高效的实现方法:

方法1:用merge合并匹配(最稳妥)

这种方法不管两个DataFrame的ID顺序如何,都能精准匹配,还能保留dataframe2的所有行:

import pandas as pd

# 先定义你的示例数据
df1 = pd.DataFrame({'id': [1, 2], 'text': ['athens', 'greece']})
df2 = pd.DataFrame({'id': [1, 2], 'wordmatch': [pd.NA, pd.NA]})

# 按id左合并,只取需要的列
merged = df2.merge(df1[['id', 'text']], on='id', how='left')
# 把匹配到的text赋值给wordmatch
df2['wordmatch'] = merged['text']

how='left'保证了dataframe2里所有行都不会丢失,哪怕某个ID在dataframe1里找不到,对应的wordmatch还是会保持NA。

方法2:用map快速映射(效率最高)

如果dataframe1里的id都是唯一的,推荐用这个方法,代码简洁且速度快:

# 把df1转成{id: 对应text}的字典映射
id_text_map = df1.set_index('id')['text'].to_dict()
# 直接给df2的wordmatch列映射值
df2['wordmatch'] = df2['id'].map(id_text_map)

数据量越大,这个方法的优势越明显,比merge的速度更快。

方法3:用loc按条件赋值(仅限ID顺序完全一致时)

如果你的两个DataFrame的id顺序完全相同,也可以直接按索引匹配赋值,但这个方法局限性大,不推荐通用场景:

df2.loc[df2['id'] == df1['id'], 'wordmatch'] = df1['text']

要是ID顺序不一样,这个方法会匹配错误,所以优先用前两种。

注意事项

如果dataframe1里存在重复的id,map和merge都会取该ID最后出现的text值。如果需要处理重复ID的情况,记得先对df1做去重(比如df1.drop_duplicates(subset='id', keep='first'))或者聚合操作。

内容的提问来源于stack exchange,提问作者Stathis G.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:23:29