Я написал следующее - все это прекрасно работает:
## ID active customers
df_active_customers = df.groupby(['VHOST','SCREENING_SCREEN_MONTH'])['TOTAL_REV'].sum().reset_index()
## Create retention rate matrix
df_retention = pd.crosstab(df_active_customers['VHOST'],df_active_customers['SCREENING_SCREEN_MONTH']).reset_index()
df_retention.head()
Теперь я пытаюсь создать массив, который получает значения:
# create an array which keeps retained and total user count for each month
months = df_retention.columns[2:]
retention_array = []
for i in range(len(months)-1):
retention_data = {}
selected_month = months[i+1]
prev_month = months[i]
retention_data['SCREENING_SCREEN_MONTH'] = int(selected_month)
retention_data['TOTAL_USER_COUNT'] = df_retention[selected_month].sum()
retention_data['RETAINED_USER_COUNT'] = df_retention[(df_retention[selected_month]>0) & (df_retention[prev_month]>0)][selected_month].sum()
retention_array.append(retention_data)
#convert the array to dataframe and calculate Retention Rate
df_retention = pd.DataFrame(retention_array)
df_retention['RETENTION_RATE'] = df_retention['RETAINED_USER_COUNT']/df_retention['TOTAL_USER_COUNT']
df_retention
и я получить эту ошибку: ValueError: invalid literal for int() with base 10: '2017-03-01'
Я пытался изменить SCREENING_SCREEN_MONTH
с объекта на отметку времени, но я получаю эту ошибку: TypeError: int() argument must be a string, a bytes-like object or a number, not 'Timestamp'
Есть мысли? Спасибо!