

新闻资讯
技术学院本文介绍在 pandas 中通过列名列表动态选取多列,并利用 `apply()` 和解包操作符 `*` 将其高效传入自定义函数的方法,避免手动书写冗长的列引用,提升代码可维护性与扩展性。
在使用 Pandas 进行数据处理时,常需将多列数据联合传入自定义函数(如特征工程、复合计算等)。当列数较多(例如 A–J 共 10 列)时,逐个写 x.A, x.B, ..., x.J 不仅繁琐,还易出错且难以维护。理想方案是:先将列名存入列表,再统一提取并解包传参。
核心技巧在于两点:
以下为完整示例:
import pandas as pd
import numpy as np
np.random.seed(26)
df = pd.DataFrame(np.random.randint(10, size=(3, 3)), columns=list('ABC'))
print("原始数据:")
print(df)
# A B C
# 0 5 6 0
# 1 1 6 3
# 2 0 4 2
def myfunction(a, b, c):
return (a, b, c) # 示例:返回元组
cols = ['A', 'B', 'C'] # ✅ 列名列表,支持任意长度和顺序
df['out'] = df[cols].apply(lambda x: myfunction(*x), axis=1)
print("\n添加计算结果列:")
print(df)
# A B C out
# 0 5 6 0 (5, 6, 0)
# 1 1 6 3 (1, 6, 3)
# 2 0 4 2 (0, 4, 2)⚠️ 注意事项:
pd.isna() 判断,或提前用 dropna(subset=cols) 过滤; 该方法简洁、通用、可读性强,是 Pandas 高级用法中的实用范式。