【发布时间】:2020-11-18 08:41:28
【问题描述】:
如果最接近 0 的负差异是位置 86 作为组 1,我想首先按列表分组,如果最接近 0 的负差异是位置 90,我想分配组 2。并且如果位置 86 和 90 是最近的,那么组 3 将是。运行此组后,我将重新运行代码,并且在未分配组的任何地方,它从第 4 组开始分配,以免覆盖以前的组分配。
groupby 是根据 ID、Location 和最接近 Anchor 列发生的。
请注意,在下面的示例中,我们跳过位置 66 作为例外,我将使用 df['diff'].where(df['diff'].le(0)&df['Anchor Date'].ne('Y')&df['Location'].ne(66))
输入:
ID Location Anchor Date Diff
111 86 N 5/2/2020 -1
111 87 Y 5/3/2020 0
111 90 N 5/4/2020 -2
111 90 Y 5/6/2020 0
123 86 N 1/4/2020 -1
123 90 N 1/4/2020 -1
123 91 Y 1/5/2020 0
456 64 N 2/3/2020 -2
456 66 N 2/4/2020 -1
456 91 Y 2/5/2020 0
输出:
ID Location Anchor Date Diff Group
111 86 N 5/2/2020 -1 1
111 87 Y 5/3/2020 0
111 90 N 5/4/2020 -2 2
111 90 Y 5/6/2020 0
123 86 N 1/4/2020 -1 3
123 90 N 1/4/2020 -1 3
123 91 Y 1/5/2020 0
456 64 N 2/3/2020 -2 4
456 66 N 2/4/2020 -1
456 91 Y 2/5/2020 0
【问题讨论】:
标签: python pandas datetime pandas-groupby