【发布时间】:2019-11-04 05:37:16
【问题描述】:
我有一个 DataFrame,我需要在其中计算每个人两个日期之间的事件数。
在下面的 DataFrame 中,对于每个 A 类日期,我需要计算每个人在上一个 A 类日期之前 B 类日期的数量。每个人有多少个 A 类和 B 类日期没有限制。
我想避免 for 循环,因为它们很慢。
数据帧
Person Date Type
1 01/01/19 A
1 01/05/19 B
1 02/01/19 A
1 03/01/19 A
2 01/01/19 A
2 01/07/19 B
2 01/25/19 B
2 02/01/19 A
2 02/05/19 B
2 04/01/19 A
3 03/01/19 A
3 04/01/19 A
期望的输出
Person Date Count
1 2/1/19 1
1 3/1/19 0
2 2/2/19 2
2 4/1/19 1
3 4/1/19 0
【问题讨论】:
-
这是一个很好的例子,说明您可能需要外部循环,因为您需要维护状态。每个人都会告诉你,“不要使用 for 循环,因为那是反熊猫”,但是你最终会遇到这样的问题,因为它本质上是有状态的,所以问题变得难以/不可能解决。你有多少行?你确定这不是过早的优化吗?
-
我有大约 12k 行。