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

Python如何计算pandas DataFrame每行关键字对应的最大值

问题原因

你遇到的报错是因为df['Positive Dispatch']是单列的Series对象,仅存在一维索引,axis=1是DataFrame按行计算的参数,不适用于Series;同时该列存储的是字符串格式的关键字组合,直接求最大值也无法得到你需要的数值计算结果。

解决方法
  1. 首先将关键字与固定数值的对应关系存为字典,后续新增关键字只需要更新该字典即可,无需修改其他逻辑。
  2. 对Positive Dispatch列逐行处理:先按逗号拆分得到当前行的所有关键字,查询字典获取每个关键字对应的数值,再取最大值存入新列。
    如果你的原DataFrame中已经存在a、b、c等关键字对应的数值列(0代表当前行不存在该关键字),也可以直接对这些数值列按行取最大值,效率更高。
完整可运行代码
import pandas as pd

# 关键字与固定数值的映射字典,新增关键字直接在这里添加即可
value_map = {'a':12, 'b':22, 'c':11}

# 构造测试数据
dic1 = {
    'a': [12,0,12],
    'b': [0,22,22],
    'c': [11,0,0],
}
df = pd.DataFrame(dic1)
# 生成Positive Dispatch列
df['Positive Dispatch'] = df.gt(0).dot(df.columns + ',').str[:-1]

# 方法1:通过处理Positive Dispatch字符串计算最大值,适配所有场景
df['Max'] = df['Positive Dispatch'].apply(lambda x: max(value_map[k] for k in x.split(',')))

# 方法2:直接通过数值列计算最大值,效率更高(要求数值列的值和value_map完全对应,0代表无该关键字)
# df['Max'] = df[value_map.keys()].max(axis=1)

# 只保留需要的两列输出
print(df[['Positive Dispatch', 'Max']])
输出结果
Positive Dispatch  Max
0               a,c   12
1                 b   22
2               a,b   22

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 08:45:03