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

如何对pandas DataFrame中相同前缀的列执行两两相除操作

可以用单行代码实现,适配任意数量相同前缀的列,不需要提前指定前缀名称:

result = df.groupby(df.columns.str.split('_').str[0], axis=1).apply(lambda g: g.iloc[:, 0] / g.iloc[:, 1])

代码逻辑说明

  • 先用df.columns.str.split('_').str[0]提取所有列名的前缀(也就是示例中的x、y)
  • 按前缀对列做分组,相同前缀的*_A和*_B会被分到同一组
  • 每组内直接用第一列(_A后缀的分子列)除以第二列(_B后缀的分母列),最终输出的DataFrame列名自动为对应的前缀

如果你的列顺序不固定,怕搞混分子分母,可以用更严谨的写法,明确指定取_A列除以_B列:

result = df.groupby(df.columns.str.split('_').str[0], axis=1).apply(lambda g: g.filter(like='_A').squeeze() / g.filter(like='_B').squeeze())

如果你需要的是1/9这类字符串格式的结果,而不是数值计算结果,可以用下面的写法:

result = pd.DataFrame({pre: df[f"{pre}_A"].astype(str) + "/" + df[f"{pre}_B"].astype(str) for pre in df.columns.str.split('_').str[0].unique()})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:57:01