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

如何高效实现:根据每行最大kills值获取对应玩家名称?

高效实现多级列DataFrame新增HKP列的方案

问题场景

你有一个多级列结构的DataFrame,包含各玩家的kills(击杀数)与name(名称)列,需要新增HKP列,每行值为该行kills最大的玩家名称。当前通过循环取值的实现速度过慢,需要更高效的方法。

高效实现方案

方法一:利用xs与lookup

# 提取所有玩家的kills数据,找到每行最大值对应的玩家索引
max_kill_player = final_df.xs('kills', axis=1, level=1).idxmax(axis=1)
# 直接通过lookup提取对应玩家的name值,赋值给HKP列
final_df['HKP'] = final_df.xs('name', axis=1, level=1).lookup(final_df.index, max_kill_player)

方法二:基于多级列索引的直接映射

# 定位每行kills最大的列索引,提取玩家层级
max_kill_col_idx = final_df.loc(axis='columns')[:, 'kills'].idxmax(axis=1)
player_names = final_df.loc(axis='columns')[:, 'name']
# 按索引匹配对应名称
final_df['HKP'] = player_names.lookup(final_df.index, max_kill_col_idx.get_level_values(0))

为什么这两种方法更快

这两种方案都采用了pandas的向量化操作,完全避免了Python层面的循环遍历。pandas的内置方法底层由C实现,处理大规模数据时,速度会比手动循环快几个数量级。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 17:33:26