【发布时间】:2020-11-03 14:50:31
【问题描述】:
我有一个 >150,000 行的数据框,类似于
| ID | CATEGORY | START_DATE | END_DATE | NEW_COL_I_WANT_TO_ADD |
| 0 | A | 01/07/2020 | 02/07/2020 | 1 |
| 1 | A | 28/06/2020 | null | 0 |
| 2 | B | 28/06/2020 | 29/06/2020 | 0 |
我想为每一行添加一列 i 我有特定条件下所有(不同)记录的计数:
(1) CATEGORY[i] == CATEGORY[j]
(2) & START_DATE[j] <= START_DATE[i]
(3) & END_DATE[j] null | END_DATE[j] > END_DATE[I]
所以新列COUNT 将包含所有具有相同类别的记录j 的计数 (1),在 (2) 之前开始并在 (3) 之后结束(基本上是待处理记录的数量 @987654326 @在创建i的时刻),对于ID 0的记录是1。
如何有效地为每一行执行此操作?
我尝试将 df.apply(lambda record: df[filtered_according_to_conditions].count(), axis=1) 分配给新列,但它似乎不起作用。
【问题讨论】:
-
我不确定你想要什么。您能否提供一些示例数据以及您想要的输出类型?
-
你能解释一下索引 i 和 j 之间的关系吗?即:i = j - 5 ?
-
我编辑了问题以更具体地说明操作的含义
-
@Chernabog 这里
j第行指的是i + 1,对吗?还是可以是同一类别的任何行? -
完全是@ShubhamSharma。
标签: python python-3.x pandas dataframe