python - 如何在 python pandas 的两个级别上分组计数值?

标签 python pandas

我有以下数据框

import pandas as pd
import numpy as np
df = pd.DataFrame()
df['Name'] = ['AK', 'Ram', 'Ram', 'Singh', 'Murugan', 'Kishore', 'AK']
df['Email'] = ['AK@gmail.com', 'a@djgbj.com', 'a@djgbj.com', '3454@ghhg.io', 'dgg@qw.cc', 'dgdg@dg.com', 'AK@gmail.com']
df['Cat'] = ['ab1', 'ab2', 'ab1', 'ab2', 'ab1', 'ab2', 'ab1']
df['Id'] = ['abc1', 'abc2', 'abc3', 'abc4', 'abc5', 'abc6', 'abc7']

对于下面的代码

dfs=df.groupby(['Email', 'Cat'])['Email'].count().reset_index(name='Number')

它给出:

      Email         Cat Number
0   3454@ghhg.io    ab2 1
1   AK@gmail.com    ab1 2
2   a@djgbj.com     ab1 1
3   a@djgbj.com     ab2 1
4   dgdg@dg.com     ab2 1
5   dgg@qw.cc       ab1 1

如何在dfs上分组得到如下输出?

Cat Number Count
ab1 1      3
ab1 2      1
ab2 1      3

最佳答案

使用groupby + sizereset_index :

df1 = dfs.groupby(['Cat','Number']).size().reset_index(name='Count')

或者:

df1 = dfs.groupby(['Cat','Number'])['Email'].value_counts().reset_index(name='Count')

print(df1)
   Cat  Number  Count
0  ab1       1      2
1  ab1       2      1
2  ab2       1      3

关于python - 如何在 python pandas 的两个级别上分组计数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53260893/

相关文章:

python - 总结 DataFrame 中的行,同时保持类似的 DataFrame 结构

关于 write() 和 truncate() 的 Python 问题

python - 错误匹配列表python中的0

python - PuLP:每组仅使用一项

python - 获取固定的图例颜色图

python - 使用 pandas 和 python 查找数据集中列的平均值

python - 使用 Lambdas 在 Python 中比较函数

python - 按行的绝对值对数据帧进行排序

python - 如何匹配两个列表并且只更改每对中的第二个?

python - 如何在 pandas DataFrame 中将值从 6200000 转换为 6.2M 或 1900 到 1.90K 的列?