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

如何基于字典和索引高效替换Pandas DataFrame文本值

基于指定列值批量替换DataFrame中对应文本的高效方法

问题背景

现有包含Order和Text两列的数据集,需要根据Order列的特定值,批量替换对应行的Text内容。原使用apply的方法在216行数据上运行耗时过长,尝试基于索引的字典替换时因Series无put属性报错,需寻求高效实现方案。

示例初始数据:

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'Order': ['OrderF14-47', 'OrderF13-43', 'OrderF15-50'],
    'Text': ['disclose the information', 'confirm withhold s. 88', 'initial notice']})

高效解决方案

方法1:使用loc直接定位替换

通过loc筛选出Order匹配字典键的行,直接赋值新的Text内容,是最直观高效的方式:

# 定义替换规则字典:key为Order值,value为要替换的Text内容
replace_dict = {
    'OrderF14-47': 'disclose under s. 22.',
    'OrderF15-50': 'updated initial notice'
}

# 遍历字典,批量替换
for order_val, new_text in replace_dict.items():
    df.loc[df['Order'] == order_val, 'Text'] = new_text

print(df)

输出结果:

Order                      Text
0  OrderF14-47       disclose under s. 22.
1  OrderF13-43      confirm withhold s. 88
2  OrderF15-50  updated initial notice

方法2:将Order设为索引后用replace更新

把Order设为DataFrame的索引后,可直接利用replace方法针对索引匹配替换:

df_indexed = df.set_index('Order')
replace_dict = {
    'OrderF14-47': 'disclose under s. 22.',
    'OrderF15-50': 'updated initial notice'
}

# 针对索引匹配替换Text列
df_indexed['Text'] = df_indexed['Text'].replace(replace_dict)
# 还原索引(可选)
df_updated = df_indexed.reset_index()

print(df_updated)

方法3:使用update方法批量更新

update方法可直接用字典匹配索引进行批量更新,效率更高:

# 先将Order设为索引
df_indexed = df.set_index('Order')
replace_dict = {
    'OrderF14-47': 'disclose under s. 22.',
    'OrderF15-50': 'updated initial notice'
}

# 将字典转为Series,匹配索引更新
df_indexed['Text'].update(pd.Series(replace_dict))
df_updated = df_indexed.reset_index()

print(df_updated)

原方法报错原因

原代码中df['Text'].put(di.keys(), di.values())报错是因为**Series对象没有put方法**,put是numpy数组的专属方法,即便转为数组使用,也不如上述Pandas原生方法直观高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 14:02:44