首页 > 解决方案 > 如何计算组中的记录数并将它们保存在 csv 文件中?

问题描述

我有一个数据集如下:

import  pandas as pd

dict = {"A":[1,1,1,1,5],"B":[1,1,2,4,1]}

dt = pd.DataFrame(data=dict)

所以,如下:

  A  B
  1  1
  1  1
  1  2
  1  4
  5  1

我需要根据每个组有多少条记录应用 groupbyA并计算?B

我已应用以下解决方案:

dtSize = dt.groupby(by=["A","B"], as_index=False).size()
dtSize.to_csv("./datasets/Final DT/dtSize.csv", sep=',', encoding='utf-8', index=False)

我有两个问题:

  1. 当我打开保存的文件时,它只包含最后一列,其中包含每个组中的数字元素,但不包括

  2. 当我打印最终dtSize结果如下:

在此处输入图像描述

所以,A遗漏了一些类似的记录。

.csv我最喜欢的输出在文件中如下所示

A  B   Number of elements in group
1  1    2
1  2    1
1  4    1
5  1    1

标签: pythonpandas

解决方案


实际上,来自A的数据并没有丢失。GroupBy.size返回一个系列,因此AB用作MultiIndex. 因此,A不会打印前三行中的重复值。

你很近。您需要重置索引,并且可以选择为结果命名:

dt.groupby(['A', 'B']).size().reset_index(name='Size')

结果是:

   A  B  Size
0  1  1     2
1  1  2     1
2  1  4     1
3  5  1     1

推荐阅读