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

如何按条件用不同列值替换Pandas DataFrame某列的最大值

解决Pandas DataFrame中替换Views列最大值的问题

首先我先帮你补全DataFrame的创建代码(你的原始片段不完整),先明确数据结构:

import pandas as pd
data = [
    ["1.Blend Of Vdx Display","DISPLAY","Features","CPE",1255,778732,13373,7142],
    ["1.Blend Of Vdx Display","DISPLAY","TVC","CPE",10479,778732,13373,7142],
    ["2.Mobile VDX","Display","Features","CPE",168,1000,150,160],
    ["2.Mobile VDX","Display","Features","CPE",2309,1000,150,160]
]
# 定义列名,方便后续操作
df = pd.DataFrame(
    data,
    columns=["Product", "Content_Type", "Content_Category", "Metric", "Views", "ColA", "ColB", "ColC"]
)

接下来分两种常见场景实现你的需求:

场景1:替换全局Views最大值为指定列的数值

如果你想找到整个DataFrame中Views列的最大值,将其替换为另外三列(比如ColA)的对应数值,可以这样写:

# 获取Views列的全局最大值
max_views = df["Views"].max()
# 定位最大值所在行,替换Views为对应行的ColA值
df.loc[df["Views"] == max_views, "Views"] = df.loc[df["Views"] == max_views, "ColA"]

运行后,原Views列的最大值10479会被替换为对应行的ColA值778732。

场景2:按分组替换Views最大值为指定列的数值

从你的数据结构来看,更可能是需要按Product分组,替换每组内Views的最大值为另外三列的数值(比如ColB),这种场景实用性更强:

# 计算每组的Views最大值(用transform保持原DataFrame的行数)
group_max = df.groupby("Product")["Views"].transform("max")
# 定位每组中Views等于最大值的行,替换为对应行的ColB值
df.loc[df["Views"] == group_max, "Views"] = df.loc[df["Views"] == group_max, "ColB"]

运行后,每组的最大Views值(第一组的10479、第二组的2309)会分别被替换为对应行的ColB值13373和150。

扩展:复杂条件下的替换

如果你的“特定条件”更复杂(比如同时要求Content_Type为DISPLAY),可以在loc中叠加多条件:

group_max = df.groupby("Product")["Views"].transform("max")
# 仅替换Product为"1.Blend Of Vdx Display"且Views为组内最大值的行,Views设为ColC的值
df.loc[
    (df["Product"] == "1.Blend Of Vdx Display") & (df["Views"] == group_max),
    "Views"
] = df.loc[
    (df["Product"] == "1.Blend Of Vdx Display") & (df["Views"] == group_max),
    "ColC"
]

这样就能精准控制替换的范围和目标值了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:15:13