首页 > 解决方案 > 如何知道分配给个人 p1 的孩子数量?

问题描述

在下面的数据(df2)中,我需要知道每个 p1 有多少(count)个孩子?例如:在这张图片中,显示的是单个 p1。我需要这张图片的数据表,格式如下。

p1_id | no. of p1|no. of p2| no. of p3 |
374971| 1        |3        | 4         |
....  |.....     |......   |.....      |

鉴于:没有一定的等级制度。例如,p1 可能有另一个 p1 在他下面或 p3 在他下面。并且可能有 n 个分支和节点。

Df2

   id   title   parent_id
0   11  p1          11
1   12  p1          11
2   13  p2          12
3   14  p2          12
4   15  p2          13
5   16  p2          13
6   17  p3          13

这个 df2 问题应该给出如下输出

p1_id | no. of p1|no. of p2| no. of p3 |
11    | 1        |4        | 1         |
12    | 0        |2        | 0         |

标签: pythonpandaspandas-groupbydata-analysisrecursive-query

解决方案


如果我正确理解您的问题,您只想计算每个 parent_id 有多少 p1、p2、p3 等。在这种情况下,您可以使用包含两列的列表来执行 .groupby:

df = pd.DataFrame.from_dict(
    {'c_id':[374971,363401,373600,363401],
     'title':['p1','p2','p1','p3'],
     'parent_id':[443547,360652,256963,360652]
    })

df.groupby(['parent_id','title']).count()

将给出与您想要的结果相似的结果,但格式不完全相同:

parent_id   title   c_id    
256963      p1      1
360652      p2      1
            p3      1
443547      p1      1

希望这可以帮助!


推荐阅读