python - 分组和计算频率,Pandas

标签 python pandas frequency

我有一个数据框:

df = pd.DataFrame({'Type' : ['Pokemon', 'Pokemon', 'Bird', 'Pokemon', 'Bird', 'Pokemon', 'Pokemon', 'Bird'],'Name' : ['Jerry', 'Jerry', 'Flappy Bird', 'Mudkip','Pigeon', 'Mudkip', 'Jerry', 'Pigeon']})

我需要将观察结果与它们的类型进行分组,即所有口袋妖怪类型及其各自的名称。我需要添加另一列,其中包含类型中名称的出现频率。它应该看起来像:

Type         Name     Frequency   
Pokemon      Jerry        3 
             Mudkip       2    

Bird         Pigeon       2  
           Flappy Bird    1  

我用过:

data2 = df.groupby(['Type']) 

但这并没有按照需要的方式对其进行分组。
请帮忙。

最佳答案

我想你想对“类型”和“名称”进行分组:

print df.groupby(['Type','Name']).size()

Type     Name       
Bird     Flappy Bird    1
         Pigeon         2
Pokemon  Jerry          3
         Mudkip         2

或者如果将列命名为“频率”很重要,您可以执行如下操作:

print df.groupby(['Type','Name'])['Type'].agg({'Frequency':'count'})

                     Frequency
Type    Name                  
Bird    Flappy Bird          1
        Pigeon               2
Pokemon Jerry                3
        Mudkip               2

关于python - 分组和计算频率,Pandas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23402150/

相关文章:

java - Java 的更多核心 VS 更高频率

python - 将 np.where 数组转换为列表

Python:消除额外的逗号(错误标记数据。C 错误:第 29 行中预期有 3 个字段,看到了 4)

r - 如何计算给定因子中每个级别的值?

python - 如何安装 Python Pandas ?

python - 分块读取 Pandas 中的多个 CSV 文件

java - 如何确定每个文档中术语的术语频率?

python - panda栏修改面临的问题

python - 使用 plotly 的动态频谱

python - 另一个函数的 lambda 函数,但强制固定参数