J'ai un dataframe de la forme suivantePandas: Count intersections d'intervalle de temps sur un groupe par
import pandas as pd
Out[1]:
df = pd.DataFrame({'id':[1,2,3,4,5],
'group':['A','A','A','B','B'],
'start':['2012-08-19','2012-08-22','2013-08-19','2012-08-19','2013-08-19'],
'end':['2012-08-28','2013-09-13','2013-08-19','2012-12-19','2014-08-19']})
id group start end
0 1 A 2012-08-19 2012-08-28
1 2 A 2012-08-22 2013-09-13
2 3 A 2013-08-19 2013-08-21
3 4 B 2012-08-19 2012-12-19
4 5 B 2013-08-19 2014-08-19
pour la ligne donnée dans mon dataframe je voudrais compter le nombre d'éléments dans le même groupe qui ont un intervalle de temps qui se chevauche. Par exemple, dans le groupe A, id 2, du 22 août 2012 au 13 septembre 2013, le chevauchement entre id 1 (du 19 août 2012 au 28 août 2012) et id 3 (du 19 août 2013 au 21 août 2013) pour un compte de 2.
a l'inverse il n'y a pas de chevauchement entre les éléments dans le groupe B
donc, pour mon exemple ci-dessus dataframe je voudrais produire quelque chose comme
Out[2]:
id group start end count
0 1 A 2012-08-19 2012-08-28 1
1 2 A 2012-08-22 2013-09-13 2
2 3 A 2013-08-19 2013-08-21 1
3 4 B 2012-08-19 2012-12-19 0
4 5 B 2013-08-19 2014-08-19 0
je pouvais « brute- force "ceci mais je voudrais savoir s'il y a un Pandas plus efficace façon de faire cela.
Merci d'avance pour votre aide
Pouvez-vous élaborer un peu à propos de l'intervalle de temps d'intersection. Je veux dire expliquer comment vous avez compté – Dark
@Bharathshetty - J'ai élaboré sur ma question maintenant – johnaphun