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

Pandas处理大型CSV 按玩家等级统计最常用道具方案

各玩家等级最高使用率道具统计方案

原有代码问题

最初写的单等级统计代码存在两个核心问题,是和Excel countifs校验结果不一致的原因:

  • 直接对筛选后的DataFrame调用mode()方法时,如果某一道具列存在多个频次并列最高的取值,方法会返回所有并列结果,而非单值,和countifs默认返回首个匹配最高频值的逻辑不匹配
  • 仅支持手动指定单个等级计算,无法自动遍历1-30级完成批量统计

用到的测试数据集结构示例如下:

indexplayerLevelplayerKnifeplayerBackpack
01knife_1backpack_1
12knife_2backpack_1
23knife_1backpack_2
31knife_2backpack_1
42knife_3backpack_2
51knife_1backpack_1
615knife_13backpack_12
713knife_10backpack_9
81knife_1backpack_2

批量统计实现代码

直接用pandas分组聚合即可一次性完成全等级统计,不需要手动写循环逐等级筛选,代码如下:

import pandas as pd

# 读取数据集并提取需要的核心列
df = pd.read_csv('filename.csv')
df = df[["playerLevel", "playerKnife", "playerBackpack"]]

# 按玩家等级分组,分别计算每组最高频的刀具、背包
level_top_item = df.groupby("playerLevel").agg(
    top_knife=("playerKnife", lambda col: col.value_counts().index[0]),
    top_backpack=("playerBackpack", lambda col: col.value_counts().index[0])
).reset_index()

# 补全1-30全等级序列,无玩家数据的等级对应道具列显示为空值
level_top_item = level_top_item.set_index("playerLevel").reindex(range(1, 31)).reset_index()

# 打印输出结果
print(level_top_item)

逻辑说明

  • groupby("playerLevel")会自动按等级拆分数据集,替代手动逐等级筛选的操作
  • 每个分组内用value_counts()对道具取值做频次统计,返回结果默认按频次降序排列,取索引第一位即为该等级使用人数最多的道具,遇到并列最高频的情况默认取排序首位的取值,和Excel countifs的统计逻辑对齐
  • 最后通过reindex补全1到30的完整等级序列,避免出现高等级无玩家数据时结果缺行的问题,方便后续核对

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 11:06:18