Python Pandas如何在满足条件的指定行列上应用自定义函数
实现代码
import pandas as pd # 初始化数据 df = {'a': [1, 2, 3], 'b': [77, 88, 99], 'c1': [1, 1, 1], 'c2': [2, 2, 2], 'c3': [3, 3, 3]} df = pd.DataFrame(df) # 自定义函数 def test_function(row): return row['b'] # 核心实现逻辑 for col in df.columns[df.columns.str.startswith('c')]: # 提取当前c列后缀的数字 col_suffix_num = int(col[1:]) # 匹配a列值等于后缀数字的行 match_mask = df['a'] == col_suffix_num # 对匹配行应用自定义函数并赋值 df.loc[match_mask, col] = df[match_mask].apply(test_function, axis=1) # 输出结果验证 print(df)
实现说明
- 用
str.startswith('c')动态筛选所有c开头的列,不需要硬编码c1/c2/c3,后续新增同规则列也能自动适配 - 逐列匹配a列值和列名后缀,仅修改符合条件的单元格,性能开销小,逻辑清晰易读
- 完全兼容自定义函数的后续逻辑调整,只要函数保持接收行参数返回目标值即可,不需要修改核心逻辑
内容的提问来源于stack exchange,提问作者Alvin
相关产品推荐
相关产品推荐

