根据 2 个条件选择组的行,但结合该组的唯一类别
Posted
技术标签:
【中文标题】根据 2 个条件选择组的行,但结合该组的唯一类别【英文标题】:Select the rows of the group based on 2 conditions but combine the unique categories of that group 【发布时间】:2021-02-18 20:07:43 【问题描述】:我有一张像下面这样的表格
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
【问题讨论】:
你在 Pandas 数据框中使用这个吗? 是的,作为熊猫数据框 只是为了确认:当你想对给定的行进行分组时,你想为Date
和Cycle
取第一个值吗? (就像你对TEMPERATURE & VOLUME
行所做的那样)
另外,您能否阐明处理“循环数小于 100”的条件?如果两个日期之间的差异小于 2 但周期之间的差异 > 100 会发生什么?
编辑示例解释了应用了哪些规则
【参考方案1】:
这样的事情应该可以解决问题
df.groupby(['id', 'date', 'cycles']).agg("Category": " & ".join)
【讨论】:
如何确保满足日期条件和周期条件以及类别也只需要唯一值以上是关于根据 2 个条件选择组的行,但结合该组的唯一类别的主要内容,如果未能解决你的问题,请参考以下文章