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

如何用Pandas中同行其他列的值替换指定列的特定值

解决DataFrame中替换Payee列'DEBIT'值为对应Memo列内容的问题

先构造示例DataFrame(匹配你的场景)

import pandas as pd

data = {
    'Payee': ['DEBIT', 'Grocery Store', 'DEBIT', 'Gas Station'],
    'Memo': ['FC02-0224-0185673-83 mom  ball tickets', 'Weekly groceries', 'Online subscription renewal', 'Fill up tank']
}
df = pd.DataFrame(data)

方法1:使用loc索引直接修改(最直观)

通过布尔索引定位Payee列等于'DEBIT'的行,直接将这些行的Payee值替换为同一行的Memo值:

df.loc[df['Payee'] == 'DEBIT', 'Payee'] = df['Memo']

方法2:使用where函数

where会保留满足条件的原数值,不满足条件的则替换为指定值。这里我们保留非'DEBIT'的Payee值,将'DEBIT'替换为对应Memo:

df['Payee'] = df['Payee'].where(df['Payee'] != 'DEBIT', df['Memo'])

方法3:正确使用mask函数(纠正你之前的用法)

mask的逻辑是当条件为True时替换值,刚好适配需求——当Payee等于'DEBIT'时,用Memo值替换:

df['Payee'] = df['Payee'].mask(df['Payee'] == 'DEBIT', df['Memo'])

验证结果

执行任意一种方法后,打印df即可看到替换效果:

print(df)

输出示例:

Payee                                   Memo
0  FC02-0224-0185673-83 mom  ball tickets  FC02-0224-0185673-83 mom  ball tickets
1                          Grocery Store                          Weekly groceries
2                Online subscription renewal                Online subscription renewal
3                            Gas Station                            Fill up tank

补充:为什么replace可能失效?

如果你之前用的是df['Payee'].replace('DEBIT', df['Memo']),这种写法是全局替换逻辑,replace会把所有'DEBIT'替换为df['Memo']的整个Series,而非对应行的匹配值,所以无法达到预期效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 01:27:15