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

如何基于Pandas DataFrame的col1列条件,用apply修改col2指定值

解决方案

要实现你想要的效果,关键是只对符合col1条件的行中的col2列应用你的选择函数,而不是修改整个col2列。这里有个简洁的实现方式:

import pandas as pd

# 初始化你的DataFrame
df = pd.DataFrame({'col1': [69, 77, 88], 'col2': ['barf;', 'barf;', 'barfoo']})

# 定义你的选择函数
def selection_func(string):
    ''' 当字符串为'barf;'时返回'a' '''
    if string == 'barf;':
        return 'a'
    else:
        return string

# 定义筛选条件
condition = (df['col1'] == 69) | (df['col1'] == 88)

# 仅对符合条件的行的col2列应用函数
df.loc[condition, 'col2'] = df.loc[condition, 'col2'].apply(selection_func)

# 打印结果
print(df)

输出结果:

col1    col2
0    69       a
1    77  barf;
2    88  barfoo

关键逻辑说明:

  • df.loc[condition, 'col2']是Pandas里精准定位单元格的方法:它会筛选出所有满足col1 == 69或col1 == 88的行,然后只选中这些行的col2列。
  • 对选中的col2值应用selection_func后,只有符合条件的行才会被修改:比如第0行的barf;被转换成a,第2行的barfoo因为不满足函数判断,保持原样;而col1=77的行不在筛选范围内,所以col2完全不受影响,完美匹配你的期望输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 21:17:57