使用diff选择groupby meeting条件中的第一行

时间:2018-04-05 16:43:39

标签: python pandas

我想为groupby中的每个组选择满足diff()条件的第一个匹配/行。

起初,我想我想在这里使用过滤器,因为我想减少groupby的结果。现在我正在尝试这个:

df_slice.groupby('SeqNum').filter(lambda x: x.A.diff() <= -1).first()

导致:

{TypeError}filter function returned a Series, but expected a scalar bool

从错误中,我得到的差异是返回一个系列,它期望一个标量,但我不知道如何改进语句来得到我想要的,这是每个小组会议的第一次出现/行差异标准。

2 个答案:

答案 0 :(得分:0)

您可以添加drop_duplicate

df_slice[df_slice.groupby('SeqNum').apply(lambda x: (x.A.diff() <= -1)).sort_index(level=1).values].drop_duplicates('SeqNum')

答案 1 :(得分:0)

选择min(id)keep(dense_rank first order by kind)id      ,val      ,min(kind)kind   来自mytable  由val组; ID | VAL |类 - :| ---:| ---:  3 | 3 | 4  2 | 1337 | 1