python - 在熊猫数据框中使用 groupby 时如何保留所有数据字段?
问题描述
我正在收集有关对我组织存储库的贡献的一些统计数据。最终的数据框如下所示:
repository developer commits adds deletes first_commit_week last_commit_week
repo1 dev1 1 57 12 2021-01-10 2021-01-10
repo1 dev2 5 71 58 2020-08-23 2020-09-27
repo1 dev3 10 107 16 2020-08-09 2020-10-18
repo2 dev1 25 712 1184 2020-06-28 2020-12-13
repo2 dev3 51 1141 236 2021-01-10 2021-05-09
repo2 dev4 4 9 7 2021-01-10 2021-05-09
repo2 dev5 10 121 242 2020-08-09 2021-02-07
repo2 dev6 75 4319 8881 2020-07-19 2021-04-25
repo3 dev1 21 3008 6391 2019-09-08 2021-05-09
repo3 dev3 5 51 70 2019-09-08 2021-04-25
repo3 dev6 1 14 1 2020-06-28 2020-06-28
之后,我将数据框分组并像这样打印:
df_groupby_repository_developer = stats_df.groupby(["repository", "developer"])
print(df_groupby_repository_developer.sum().to_string())
导致此输出
commits adds deletes
repository developer
repo1 dev1 1 57 12
dev2 5 71 58
dev3 10 107 16
repo2 dev1 25 712 1184
dev3 51 1141 236
dev4 4 9 7
dev5 10 121 242
dev6 75 4319 8881
repo3 dev1 21 3008 6391
dev3 5 51 70
dev6 1 14 1
有了这个,我有一个很好的视觉输出。它很好地显示了组,没有额外的存储库名称。但是,它会丢失两个日期字段。
我意识到这是由于sum()
,但我想要我拥有的漂亮的视觉输出,groupby
但也有原始数据框中的第一个和最后一个提交日期。我怎样才能做到这一点?
有没有更好的方法来实现这一点?groupby
感觉这是错误的方法,因为我已经玩过它来做到这一点。
解决方案
stats_df.groupby(["repository", "developer"]).agg({
'commits':'sum',
'adds':'sum',
'deletes':'sum',
'first_commit_week':'first',
'last_commit_week':'last'
})
输出
commits. adds deletes first_commit_week last_commit_week
repository developer
repo1 dev1 1 57 12 2021-01-10 2021-01-10
dev2 5 71 58 2020-08-23 2020-09-27
dev3 10 107 16 2020-08-09 2020-10-18
repo2 dev1 25 712 1184 2020-06-28 2020-12-13
dev3 51 1141 236 2021-01-10 2021-05-09
dev4 4 9 7 2021-01-10 2021-05-09
dev5 10 121 242 2020-08-09 2021-02-07
dev6 75 4319 8881 2020-07-19 2021-04-25
repo3 dev1 21 3008 6391 2019-09-08 2021-05-09
dev3 5 51 70 2019-09-08 2021-04-25
dev6 1 14 1 2020-06-28 2020-06-28
推荐阅读
- solr - 在 solr 7.7 中使用特殊字符进行 Solr 排序
- c++ - 双向链表 C++。插入功能不起作用
- sql - 如何将列从 varchar 更改为几何
- java - 无法在控制器中调试@ExceptionHandler(ConstraintViolationException.class) - Spring boot
- python-3.x - 尝试更新数据框中的单元格时出现“IndexError:iloc 无法放大其目标对象”
- oauth - OAuth1 PALINTEXT:惊喜!只有 oauth_token 是强制性的吗?
- javascript - React 原生调用回调函数
- javascript - adsense 页面加载速度显着下降?
- sql-server - 通过将 1 添加到最后一个数据来将新数据添加到数据库
- mongodb - .addCursorFlag() 在 Mongoose Typescript 上不可用