python - 如何计算组中的记录数并将它们保存在 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)
我有两个问题:
当我打开保存的文件时,它只包含最后一列,其中包含每个组中的数字元素,但不包括组
当我打印最终
dtSize
结果如下:
所以,A
遗漏了一些类似的记录。
.csv
我最喜欢的输出在文件中如下所示
A B Number of elements in group
1 1 2
1 2 1
1 4 1
5 1 1
解决方案
实际上,来自A
的数据并没有丢失。GroupBy.size返回一个系列,因此A
和B
用作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
推荐阅读
- angular - 使用 ngFor 和 Map 进行角度变化检测
- python - 启动器中的 Python 虚拟环境致命错误:无法使用
- java - intellij 插件:在模块上添加 Jar 库
- swift - 如何为pdf设置标题和作者(swift,UIKit)
- python - 通过对一列进行分组并与另一列进行增量添加来创建列
- javascript - 部分渲染不适用于 ajax 调用 rails
- vue.js - 在后端调用 Vuejs 期间冻结 UI
- android - 无法在 Windows 10 上卸载 Android Studio
- swiftui - SwiftUI:如何将格式应用于选取器选项?
- javascript - 当来自网站的预订时段可用时创建通知和自动预订?