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

如何在Pandas中批量处理多列数据?简化重复操作方法咨询

简化两类重复Pandas操作的方案

第一类正态分布CDF计算的简化

你可以通过字典映射结合df.assign()方法,一次性完成所有列的计算,避免重复调用scipy.stats.norm.cdf:

import scipy.stats

# 定义目标列与前缀的映射关系
col_prefix_map = {'A': 'a', 'B': 'b', 'C': 'c'}
# 批量生成计算逻辑并赋值
df = df.assign(**{
    col: scipy.stats.norm.cdf(df[f'{prefix}Score'], loc=df[f'{prefix}mean'], scale=df[f'{prefix}std']) * 100
    for col, prefix in col_prefix_map.items()
})

第二类分组求和转换的简化

针对多列的分组求和转换,直接传入列列表即可一次性处理,无需重复编写groupby逻辑:

# 一次性对D、E、F列执行分组求和转换
df[['D', 'E', 'F']] = df.groupby(['col1', 'col2'])[['D', 'E', 'F']].transform(sum)

合并成一行(可选)

如果要强行写成一行,也可以把两类操作链式调用,但会牺牲可读性:

import scipy.stats
df = df.assign(**{'A': scipy.stats.norm.cdf(df['aScore'], loc=df['amean'], scale=df['astd'])*100, 'B': scipy.stats.norm.cdf(df['bScore'], loc=df['bmean'], scale=df['bstd'])*100, 'C': scipy.stats.norm.cdf(df['cScore'], loc=df['cmean'], scale=df['cstd'])*100}).pipe(lambda x: x.assign(**{col: x.groupby(['col1','col2'])[col].transform(sum) for col in ['D','E','F']}))

实际开发中更推荐分开编写,保证代码的可维护性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 03:35:01