pandas - 根据 2 个条件选择组的行,但结合该组的唯一类别
问题描述
我有一张如下表
ID Date Category Cycles
--------------------------------------------
RYI19 6/12/2018 TEMPERATURE 1567 y
RYI19 6/13/2018 VOLUME 1620 n
RYI19 6/25/2018 AREA 1890 y
RYI19 6/28/2018 TEMPERATURE 1435 y
TYI23 5/10/2020 LENGTH 1567 Y
TYI23 6/12/2020 LENGTH 1678 Y
TYI23 6/13/2020 LENGTH 1689 n
在我唯一的条件是从组中选择第一个之前
所以我写了这段代码:
select
ID, date
from
(select
ID, date,
row_number() over(partition by ID order by date) rn
from
table1) t1
where
rn = 1
现在我有 2 个额外的列和 2 个条件,如果该组在 2 天内并且周期小于 100,则不要考虑该记录。理想情况下,周期需要随着日期的增加而增加,但如果它更小,则只需要考虑 2 天的日期条件来选择或不选择记录。就类别而言,当不考虑记录时,它需要结合所有独特的类别。如果日期相同,则需要选择其中一个。
ID Date Category Cycles
-------------------------------------------------
RYI19 6/12/2018 TEMPERATURE & VOLUME 1567
RYI19 6/25/2018 AREA 1890
RYI19 6/28/2018 TEMPERATURE 1435
TYI23 5/10/2020 LENGTH 1567
TYI23 6/12/2020 LENGTH 1678
我需要确保字段中只有唯一的类别 - 请注意,最后一条记录在类别中没有 LENGTH 两次。
编辑:明确添加规则 1)如果日期在 2 天内或周期在 100 个周期内,则删除非 VOLUME 记录,但如果类别均为 VOLUME 或均为 NON VOLUME 记录,则显示之前的日期记录。
2)如果温度类别是在体积记录之前 10 天,那么也只考虑体积记录,即标记要删除/过滤的温度记录。
3)如果日期之一是在 12 月,那么如果类别不同,则考虑 30 天的差异。
ID Date Category Cycles
RPI100 8/7/2020 Volume 4327
RPI100 8/18/2020 TEMPERATURE 4300
RDY234 6/1/2020 VOLUME 7014
RDY234 6/4/2020 TEMERATURE 7014
PDI23 8/3/2020 VOLUME 9799
PDI23 9/28/2020 TEMERATURE 12968
PDI23 10/6/2020 VOLUME 13398
F128 2/25/2020 TEMERATURE 9875
YU567 12/2/2020 VOLUME 7403
YU567 12/3/2020 VOLUME 7436
RTY78 8/17/2020 STATE 3198
TYI12 1/27/2020 VOLUME 6145
RPI145 12/16/2019 VOLUME 2110
RPI145 1/23/2020 TEMPERATURE 0
解决方案
Something like this should do the trick
df.groupby(['id', 'date', 'cycles']).agg({"Category": " & ".join})
推荐阅读
- .net - 是否可以将 .Net 核心 MVC 应用程序包装为 dll,添加对另一个控制台应用程序的引用并从控制台应用程序开始?
- http - 如何从http POST请求结果颤振在listview builder上显示数据
- typescript - Typescript 编译器永远不会出错:Type 'string | number' 不可分配给类型 'never'。类型“字符串”不可分配给类型“从不”
- python - 以分类值作为标签的热图
- unity3d - OneSignal SDK 想要在 Unity 中导入时删除所有资产
- vue.js - NuxtJS - 将所有错误的 url 重定向到 404 页面
- javascript - 如何使用 Angular 获取典型的 json 数据
- animation - 如何在 Flutter 中创建滑入滑出动画?
- javascript - React Contenteditable - 如何将 onClick 分配给react-contenteditable?
- c++ - FindCirclesGrid c++11 不起作用,尽管检测器找到了所有点