计算匹配组的描述

2024-04-23 09:18:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用具有以下结构的熊猫数据帧:

import pandas as pd
import numpy as np

df = pd.DataFrame({'brand' : ['A', 'B', 'A', 'B', 'A', 'B', 'A', 'B', 'C', 'A', 'B', 'C', 'A', 'B', 'C'], 
                   'value' : [111, 111, 222, 222, 333, 333, 444, 444, 444, 555, 555, 555, 666, 777, 888]})

print(df)

   brand  value
0      A    111
1      B    111
2      A    222
3      B    222
4      A    333
5      B    333
6      A    444
7      B    444
8      C    444
9      A    555
10     B    555
11     C    555
12     A    666
13     B    777
14     C    888

我想计算一下上表中的一些描述:

首先,数一数拥有相同价值的不同品牌的群体数量。下面是一个帮助视觉:

enter image description here

正如你所看到的,有5个集团,其中每个集团内的品牌是不同的,匹配相同的价值。所以基本上,我想写一个查询,输出这些组的数量(本例中为5)


第二,我想对每个小组有一个更详细的了解。具体计算:

  • 有单个记录的组数:3(最后3条记录)
  • 有2条记录的组数:3(红、绿、蓝组)
  • 有3条记录的组数:2(紫色和黑色组)

我试图用groupby语句来解决我的问题,但没有成功。任何帮助都将不胜感激


Tags: 数据importpandasdf数量valueas记录
1条回答
网友
1楼 · 发布于 2024-04-23 09:18:03

第一个问题

使用GroupBy.size 并添加值​​与1比较的真实结果:

(df.groupby('value').size()>1).sum()

输出:

5

第二个问题

您可以使用Series.value_counts创建这样的数据帧:

df_count=df.groupby('value').size().value_counts().reset_index(name='Nº Groups').rename(columns={'index':'Nº Records/Group'})
print(df_count)

   Nº Records/Group   Nº Groups
0                 2           3
1                 1           3
2                 3           2

相关问题 更多 >