У меня есть набор данных, где у каждой строки есть диапазон дат и значение ID
.
Я хочу знать для каждой строки, сколько других строк (имеющих одинаковые ID
) имеютdate1
в пределах диапазона дат в этой строке.
Вот что я попробовал:
import random
import string
test1 = pd.DataFrame({
'ID':[''.join(random.choice(string.ascii_letters[0:4]) for _ in range(3)) for n in range(100)],
'date1':[pd.to_datetime(random.choice(['01-01-2018','05-01-2018','06-01-2018','08-01-2018','09-01-2018'])) + pd.DateOffset(int(np.random.randint(0, 100, 1))) for n in range(100)],
'date2':[pd.to_datetime(random.choice(['06-01-2018','08-01-2018','09-01-2018'])) + pd.DateOffset(int(np.random.randint(201, 300, 1))) for n in range(100)]
})
count = []
test1['date2'] = test1['date2'] - pd.to_timedelta(1, unit='d')
for name, group in test1.groupby('ID'):
df = group.loc[:,['date1','date2']].copy().stack().reset_index(name='c').set_index('c')
df['count'] = df.groupby('level_0')...(I get stuck here)
count = count.append(df['count'].to_list())
Затем я застреваю здесь, как определить, сколько других date1
's находятся в каждом диапазоне дат.
Таким образом, конечный результат должен быть подсчетом для каждой строки того, сколько других строк с таким же ID
имели date1
в этом диапазоне дат.