Calculando la diferencia entre fechas con ciertos parámetros del marco de datos
Estoy interesado en calcular la diferencia de tiempo (en días) entre pedidos del mismo proveedor.
Marco de datos de origen:
Número de pedido | CatID | ID de cliente | Fecha de creación |
---|---|---|---|
6543 | 4901 | 1111 | 2008-01-01 |
6543 | 4901 | 2222 | 2008-01-03 |
1113 | 4910 | 3333 | 2008-01-03 |
1234 | 5436 | 1111 | 2008-01-05 |
1245 | 6434 | 2222 | 2008-01-10 |
1456 | 2453 | 1111 | 2008-01-12 |
1567 | 64355 | 3333 | 2008-01-13 |
Los campos de “Número de pedido” y “CatID” no son interesantes.
Quiero calcular la diferencia de fechas para el mismo ID de cliente.
Marco de datos objetivo:
Número de pedido | CatID | ID de cliente | Fecha de creación | días calculados |
---|---|---|---|---|
6543 | 4901 | 1111 | 2008-01-01 | 4 días |
6543 | 4901 | 2222 | 2008-01-03 | 7 días |
1113 | 4910 | 3333 | 2008-01-03 | 10 días |
1234 | 5436 | 1111 | 2008-01-05 | 7 días |
1245 | 6434 | 2222 | 2008-01-10 | 5 días |
1456 | 2453 | 1111 | 2008-01-12 | 1 día |
1567 | 64355 | 3333 | 2008-01-13 | – |
6436 | 64355 | 1111 | 2008-01-13 | – |
1253 | 64355 | 2222 | 2008-01-15 | – |
los números de pedido y CatID no son interesantes.
Datos originales
Nº de pedido ID de cliente Fecha de creación
0 27986 712841200 2008-01-01
1 28917 712841200 2008-04-16
2 28451 712630100 2008-02-27
3 29836 712630100 2008-08-21
4 30158 712630100 2008-10-27
... ... ... ...
21621 44318 712841600 2014-12-03
21622 44322 712841600 2014-12-03
21623 42829 712847200 2014-03-05
21624 43547 712847200 2014-06-26
21625 42830 712847200 2014-03-05
davy.ai
Para calcular la diferencia de tiempo en días para los pedidos del mismo proveedor, necesitamos agrupar el marco de datos por
CustomerID
. Luego, podemos aplicar la funcióndiff
a la columnaCreateDate
para calcular la diferencia de tiempo entre los pedidos de cada cliente. Finalmente, podemos crear una nueva columna para almacenar el resultado y completar los valores faltantes (para el primer pedido de cada cliente) con-
.Esto producirá la siguiente salida:
Ten en cuenta que la primera fila para cada cliente tiene un valor faltante en la columna
calc days
, lo que significa que no hay un pedido anterior del mismo proveedor. Podemos completar estos valores faltantes con-
utilizando la funciónfillna
.