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

求助:DataFrame中姓名组合频次统计及Top10获取方法

解决姓名组合频次统计的问题

我来帮你梳理下问题所在,以及正确的解决方法~

首先,你当前代码的问题在于:df.groupby(['Name','Surname'])['Name'].count()会生成一个MultiIndex的Series(索引是(Name,Surname)组合,值是对应频次),而argmax()方法返回的是该Series中最大值的整数位置索引,不是你需要的(Name,Surname)组合本身,所以结果自然不符合预期。

下面是两种可靠的实现方案,你可以根据需求选择:

方案一:转换为DataFrame处理(更直观,适合后续扩展)

这种方式把分组结果转换成带列名的DataFrame,方便查看和操作:

# 1. 统计每个姓名组合的出现次数
name_counts_df = df.groupby(['Name', 'Surname']).size().reset_index(name='occurrences')

# 2. 获取频次最高的组合及次数
most_freq_row = name_counts_df.loc[name_counts_df['occurrences'].idxmax()]
top_name = f"{most_freq_row['Name']} {most_freq_row['Surname']}"
top_count = most_freq_row['occurrences']
print(f"出现频次最高的姓名组合:{top_name},共出现 {top_count} 次")

# 3. 获取Top10频次的组合列表
top10_combs = name_counts_df.sort_values(by='occurrences', ascending=False).head(10)
# 可选:转换成元组列表格式
top10_list = list(top10_combs.itertuples(index=False, name=None))
print("\n频次Top10的姓名组合:")
for name, surname, count in top10_list:
    print(f"{name} {surname}: {count} 次")

方案二:直接操作MultiIndex Series(更简洁)

如果不需要DataFrame格式,直接对分组后的Series操作更高效:

# 1. 统计每个姓名组合的出现次数
name_counts_series = df.groupby(['Name', 'Surname']).size()

# 2. 获取频次最高的组合及次数
most_freq_comb = name_counts_series.idxmax()  # 返回(Name, Surname)元组
most_freq_count = name_counts_series.max()
print(f"出现频次最高的姓名组合:{most_freq_comb[0]} {most_freq_comb[1]},共出现 {most_freq_count} 次")

# 3. 获取Top10频次的组合列表
top10_series = name_counts_series.sort_values(ascending=False).head(10)
# 可选:转换成字典格式(键为姓名组合元组,值为次数)
top10_dict = top10_series.to_dict()
print("\n频次Top10的姓名组合:")
for (name, surname), count in top10_dict.items():
    print(f"{name} {surname}: {count} 次")

关键知识点说明:

  • 用groupby(...).size()替代count():两者都能统计分组行数,但size()更直接(统计所有行,包括缺失值),count()只统计非缺失值的列数,这里用size()更合适。
  • idxmax() vs argmax():idxmax()返回的是最大值对应的索引标签(这里就是(Name,Surname)组合),而argmax()返回的是最大值的整数位置,这是你之前出错的核心原因。

内容的提问来源于stack exchange,提问作者Nebojsa V NLPTrader

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:18:14