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

如何在Pandas中统计code列频次并展示对应note列值?

解决方法:同时统计编码频次与对应任意备注

这问题我熟!要实现统计code列各编码的出现频次,同时获取每个编码对应的任意一条note,用pandas的分组聚合或者合并操作就能轻松搞定,给你两种实用方案:

方案一:直接分组聚合(推荐,更简洁)

这种方法通过groupby对code分组,一次性聚合出频次和任意一条备注,效率很高:

import pandas as pd

# 先构造示例数据(你可以替换成自己的DataFrame)
df = pd.DataFrame({
    'code': ['A', 'A', 'B', 'C', 'B', 'A', 'C'],
    'note': ['adam', 'alice', 'bob', 'charlie', 'beth', 'andrew', 'chris']
})

# 分组聚合:统计频次 + 取第一条备注(也可以换成last()取最后一条)
result = df.groupby('code').agg(
    出现频次=('code', 'size'),  # size()统计分组内的行数,包含NaN;如果要排除NaN用count()
    示例备注=('note', 'first')  # first()取分组内第一条note,随机取的话可以用lambda x: x.sample(n=1).iloc[0]
).reset_index()

print(result)

运行后输出结果:

code  出现频次    示例备注
0    A      3     adam
1    B      2      bob
2    C      2  charlie

方案二:先统计频次再合并去重数据

如果你习惯先单独统计频次,再和去重后的备注数据合并,也可以这么做:

# 1. 统计code的出现频次
code_counts = df['code'].value_counts().reset_index(name='出现频次')

# 2. 获取每个code对应的任意一条备注(通过去重实现)
unique_notes = df.drop_duplicates(subset='code')[['code', 'note']].rename(columns={'note': '示例备注'})

# 3. 合并两个结果
result = pd.merge(code_counts, unique_notes, on='code')

print(result)

这个方法的输出和方案一完全一致,适合分步操作的场景。

小提示

  • 如果想要随机获取一条备注,把方案一里的'first'换成lambda x: x.sample(n=1).iloc[0]即可,不过这种方法在数据量大时效率会稍低一点。
  • 用size()统计频次会包含code为NaN的情况,如果要排除NaN,换成count()就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:08:37