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

如何按Pandas DataFrame某列值的出现频率排序?

按列值出现频率排序DataFrame

你之前的代码问题主要出在变量名混淆(把animal相关逻辑写成了tree类变量)和transform参数使用错误,以下是正确的实现方案:

方案一:添加频率列后排序

先计算每个动物名称的出现次数,映射到原DataFrame每行,再按频率排序:

import pandas as pd

# 假设你的DataFrame已加载为animal_data
# 1. 统计每个animal_name的出现次数
animal_counts = animal_data["animal_name"].value_counts()

# 2. 给原DataFrame新增频率列
animal_data["freq"] = animal_data["animal_name"].map(animal_counts)

# 3. 按频率降序排序,频率相同时可按动物名称排序(可选)
sorted_animal_data = animal_data.sort_values(by=["freq", "animal_name"], ascending=[False, True])

# 不需要保留freq列可删除
sorted_animal_data = sorted_animal_data.drop(columns="freq")

方案二:用sort_values的key参数直接排序(更简洁)

借助sort_values的key参数,直接根据值的频率排序,无需额外加列:

sorted_animal_data = animal_data.sort_values(
    by="animal_name",
    key=lambda col: col.map(animal_data["animal_name"].value_counts()),
    ascending=False
)

你之前代码的错误点

  • 变量名混乱:误用tree_data_copy、tree_type_name等无关变量,导致数据不匹配报错
  • transform参数错误:传入的"tree_type_counts"不是pandas支持的聚合函数,即便用transform,正确参数应为"count",但map方式更直接高效

最终输出的sorted_animal_data会符合预期:

animal_name
0         Dog
1         Dog
4         Dog
2         Cat
5         Cat
3         Fish

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 05:22:37