Я пытаюсь создать DataFrame
, чтобы я мог проанализировать, как часто uID был активен в определенный период времени.
У меня есть вход DataFrame
следующим образом:
uID startdate stopdate active_sub
1 01-01-2019 31-01-2019 1
2 01-02-2019 31-12-2019 1
1 15-01-2019 31-12-2019 1
3 01-06-2019 31-11-2019 1
Я пытаюсь получить DataFrame
для каждого Date
и uID
, в котором суммируются активные подписки для каждого пользователя.
Date uID:1 uID:2 uID:3
01-01-2019 1 0 0
02-01-2019 1 0 0
03-01-2019 1 0 0
...
15-01-2019 2 0 0 #uID:1 has 2 active subcriptions on this day
...
31-12-2019 1 1 1
У меня есть следующий код, который работает, но не для дубликатов uID. Входной набор данных большой и имеет много дублированных идентификаторов пользователя.
#Create date dataframe
df = pd.DataFrame(
index = pd.date_range('01-01-2019', '31-12-2019').normalize(),
columns = input_df['uID']
)
for row in input_df.iterrows():
df[row[1][0]].loc[row[1][1]] = 1 #StartDate
df[row[1][0]].loc[row[1][2]] = 0 #EndDate
df[row[1][0]] = df[row[1][0]].fillna(method= 'ffill')
df = df.fillna(0)
Возможно ли быстрое исправление или есть другой способ быстро достичь этого желаемого кадра данных?