python - 如何检查大数据集Python中最大值的日期和时间
问题描述
我有大约 30-60,000,000 行的数据集。每个人在数据集中的每一天Name
都有一个或多个ID
与之关联的唯一性。一些OP_DATE
和OP_HOUR
唯一的 ID 可以有 0 或每个的空白值Load1,2,3
。
我正在寻找一种方法来计算所有看起来像这样的列的总最大值:OP_DATE
Name ID OP_DATE OP_HOUR OP_TIME Load1 Load2 Load3
OMI 1 2001-01-01 1 1 11 10 12
OMI 1 2001-01-01 2 0.2 1 12 10
.
.
OMI 2A 2001-01-01 1 0.4 5
.
.
OMI 2A 2001-01-01 24 0.6 2 7 12
.
.
Kain 2 01 2002-01-01 1 0.1 6 12
Kain 2 01 2002-01-01 2 0.98 3 14 7
.
.
OMI 1 2018-01-01 1 0.89 12 10 20
.
.
我想找到 , , 的最大值,并找出Load1
它发生在什么地方。Load2
Load3
OP_DATE
OP_TIME
OP_HOUR
我想要的输出是:
Name ID max OP_DATE max OP_HOUR max OP_TIME max Load1 max Load2 max Load3
OMI 1 2011-06-11 22 ..... max values on dates
OMI 2A 2012-02-01 12 ..... max values on dates
Kain 2 01 2006-01-01 1..... max values on dates
有没有办法可以轻松做到这一点?
我试过了:
unique_MAX = df.groupby(['Name','ID'])['Load1', 'Load2', 'Load3'].max().reset_index()
但这只会按日期分组并给我一个最大的总数 - 我也想要相关的日期、时间和时间。
解决方案
要获取任何给定字段 [max] 的完整信息行:
- 获取您想要的每个组的最大值的索引位置
- 使用索引返回每个位置的完整行
查找每个名称和 ID 对的最大 Load1 的示例
idx = df.groupby(['Name','ID'])['Load1'].transform(max) == df['Load1']
df[idx]
Out[14]:
name ID dt x y
1 Fred 050 1/2/2018 2 4
4 Dave 001 1/3/2018 6 1
5 Carly 002 1/3/2018 5 7
推荐阅读
- python - 如何将二维记录数组转换为由分隔符分隔的多行记录字符串?
- python - python数据框中行和列之间的公共元素
- go - Golang 严格的 nil 检查
- r - R:如何使用 R 使用 Bing 免费层网络搜索
- android - 从适配器中删除项目后,Recyclerview 获取现有数据并且未正确更新
- angular - 打字稿传播参数如何测试是否为空?
- c# - C# Selenium,登录后找不到任何元素
- python - 我的缓存函数抛出 TypeError(用 lru_cache 装饰)
- css - CSS | 如果太宽,则网格模板行流
- angular - 表单控制异步验证问题