У меня есть данные с номером недели, идентификатором учетной записи и несколькими столбцами использования.Я бы хотел: а) сгруппировать по идентификатору учетной записи, б) повторно выбирать еженедельные данные в ежедневные, и в) равномерно интерполировать ежедневные данные (делить еженедельные на 7), а затем объединять их.У меня есть большая часть этого, но Панды groupby
меня немного смущает.Это также очень медленно, что заставляет меня думать, что это не может быть оптимальным решением.
Данные выглядят так:
Account Id year week views stats foo_col
31133 213 2017-03-05 4.0 2.0 11.0
10085 456 2017-03-12 1.0 6.0 3.0
49551 789 2017-03-26 1.0 6.0 27.0
Вот мой код:
def interpolator(mini_df):
mini_df = mini_df[cols_to_interpolate].set_index('year week')
return mini_df.resample('D').ffill().interpolate() / 7
example = list(grp)[0][1]
interpolator(example) # This works perfectly
df.groupby('Account Id').agg(interpolator) # doesn't work
df.groupby('Account Id').transform(interpolator) # doesn't work
for name,group in grp:
group = group[cols_to_interpolate].set_index('year week')
group = group.resample('D').ffill().interpolate() / 7 # doesn't work
for acc_id in df['Account Id'].unique():
mask = df.loc[df['Account Id'] == acc_id]
print(df[mask]) # doesn't work