【发布时间】:2020-09-14 02:10:56
【问题描述】:
我有一个如下所示的数据框:
Datetime | Category | ID
--------------------------
2020-01-30 | A | 1
2020-02-01 | B | 1
2020-02-02 | A | 1
2020-02-20 | A | 1
2020-01-28 | B | 2
2020-01-29 | C | 2
2020-01-30 | C | 2
2020-01-31 | D | 2
2020-02-01 | D | 2
2020-02-02 | D | 2
2020-02-03 | C | 2
我想在该行的 1 周窗口内(不包括当前行)获取每个 ID 的前 2 个最常见的类别。熊猫有可能吗?我试图做 .rolling 和 .value_counts 但它似乎不起作用。谢谢!
下面是我想得到的数据框:
Datetime | Category | ID
--------------------------
2020-01-30 | NaN | 1
2020-02-01 | [A, ""] | 1
2020-02-02 | [A, B] | 1
2020-02-20 | NaN | 1
2020-01-28 | Nan | 2
2020-01-29 | [B,""] | 2
2020-01-30 | [B,C] | 2
2020-01-31 | [B,C] | 2
2020-02-01 | [C,D] | 2
2020-02-02 | [C,D] | 2
2020-02-03 | [C,D] | 2
谢谢!
编辑 pd.get_dummies 答案很好,但由于我的数据集很大,效率不高。如果有人对此有有效的解决方案,将不胜感激!谢谢!
【问题讨论】:
标签: python pandas rolling-computation