如何在R语言中为dataframe添加频数统计列
高效实现DataFrame添加频数列的方法
针对你的需求,这里提供两种高效的Pandas实现方式:
方法1:保留原DataFrame所有行,添加对应频数
如果你需要在原数据的每一行旁边标注该长度的出现次数,可以用groupby结合transform,这是效率很高的向量式操作:
import pandas as pd # 构造示例数据 df = pd.DataFrame({'Length': [1.2, 3.5, 3.6, 3.6]}) # 添加频数列 df['Count'] = df.groupby('Length')['Length'].transform('count')
执行后原DataFrame会变成:
Length Count 0 1.2 1 1 3.5 1 2 3.6 2 3 3.6 2
方法2:生成去重后的频数统计结果
如果想要得到你示例中去重后的结果(每个唯一长度对应一行频数),直接用value_counts()即可,这是Pandas专门为频数统计优化的方法:
# 统计频数并转换为DataFrame count_df = df['Length'].value_counts().reset_index() # 修改列名匹配需求 count_df.columns = ['Length', 'Count'] # 可选:按Length排序(和示例输出一致) count_df = count_df.sort_values('Length').reset_index(drop=True)
输出结果:
Length Count 0 1.2 1 1 3.5 1 2 3.6 2
两种方法都是基于Pandas的内置优化操作,效率远高于循环统计,其中value_counts()在单纯统计唯一值频数时性能最优。
内容的提问来源于stack exchange,提问作者timeywimey
相关产品推荐
相关产品推荐

