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

基于pandas中其他列的值替换DataFrame指定列的值

我来给你几个通用的解决方案,不管你以后要替换的条件或者目标列怎么变,这些方法都能灵活调整:

方法1:使用np.where(最直观的通用方法)

这个方法可以直接根据条件指定替换规则,单条件、多场景都能轻松扩展,是处理这类替换需求的首选之一。

import pandas as pd
import numpy as np

# 初始化你的原始DataFrame
df = pd.DataFrame({
    'Col1': pd.Series(['Abc','Cde','Efg','Abc'], index=['a', 'b', 'c','d']),
    'Col2': pd.Series([10, 20, 30, 40], index=['a', 'b', 'c', 'd']),
    'Col3': pd.Series([1, 2., 3., 4.], index=['a', 'b', 'c', 'd'])
})

# 应用替换逻辑:当Col1为"Abc"时,Col3取Col2的值,否则保留原值
df['Col3'] = np.where(df['Col1'] == 'Abc', df['Col2'], df['Col3'])

print(df)

如果后续需要添加更多替换条件(比如Col1为"Cde"时替换成其他值),可以用np.select来扩展,完全不用改整体框架,通用性拉满。

方法2:使用DataFrame.loc(精准定位修改)

loc是Pandas里用于精准定位行和列的工具,适合需要批量修改特定单元格的场景,逻辑清晰且易于维护。

# 定位Col1等于"Abc"的行,将这些行的Col3替换为对应行的Col2值
df.loc[df['Col1'] == 'Abc', 'Col3'] = df.loc[df['Col1'] == 'Abc', 'Col2']

这个方法的优势在于,你可以灵活调整筛选条件(比如结合多列的逻辑判断),也能同时修改多个列的值,非常适合复杂场景下的批量操作。

方法3:使用apply(处理复杂自定义逻辑)

如果你的替换规则特别复杂(比如需要结合多列计算、调用外部函数等),apply可以让你自定义任意逻辑来处理每行数据。

def adjust_col3(row):
    if row['Col1'] == 'Abc':
        return row['Col2']
    # 这里可以添加更多elif条件,比如处理其他Col1值的替换规则
    else:
        return row['Col3']

# 逐行应用自定义函数
df['Col3'] = df.apply(adjust_col3, axis=1)

注意:apply的执行效率比前两种方法稍低,适合数据量不大或者逻辑特别复杂的场景。

验证结果

以上三种方法都能得到你预期的输出:

Col1  Col2  Col3
a  Abc    10  10.0
b  Cde    20   2.0
c  Efg    30   3.0
d  Abc    40  40.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:52:44