假设我有一个 Dataframe
| 日期|变数|标签|计数|
| --------------|--------------|--------------|--------------|
| 1/1| A1| xy1|三|
| 1/1| A1| xy2|二|
| 2/1| B2| xy1|四个|
| 2/1| B2| yy2|四个|
| 2/1| C3| xy1|四个|
| 2/1| C3| yy2|四个|
我想根据最高计数为每个日期的每个变量选择标签。现在对于A1很容易,它将是xy 1,因为它具有最高计数(3)。现在对于B2和C3来说,这有点棘手,因为两个标签对两个变量都有相同的计数。但我们知道的是一个标签唯一地属于B2或C3。因此,我们可以将任何标签分配给B2,另一个标签将分配给C3。我们不想给B2和C3分配相同的标签。变量和标签不是唯一的组合,但对于给定的日期,组合是唯一的。
最终的 Dataframe 可能看起来像以下任何一种选项1
| 日期|变数|标签|计数|
| --------------|--------------|--------------|--------------|
| 1/1| A1| xy1|三|
| 2/1| B2| yy2|四个|
| 2/1| C3| xy1|四个|
选项二
日期 | 变数 | 标签 | 计数 |
---|---|---|---|
1/1 | A1 | xy1 | 三 |
2/1 | B2 | xy1 | 四个 |
2/1 | C3 | yy2 | 四个 |
我们如何用pandas或python来实现这一点呢?
1条答案
按热度按时间xzlaal3s1#
一个可能的解决方案是考虑关于标签而不是日期变量的问题。事实上,我们的目标是最大化特定日期/变量对的标签计数。如果我们沿着计数(降序)对数组进行排序并获取标签,我们将最终得到一个分配策略。以最大的标签为例,我们将按顺序取对并删除:
我们在剩余的数据集中查找剩余的分配。
下面是一个实现
它回来了