Я много слышал о применении панд медленно, и его следует использовать как можно меньше.
У меня есть ситуация здесь:
df = pd.DataFrame({'Date': ['2019-01-02', '2019-01-03', '2019-01-04'],
'Fund_ID': [9072, 9072, 9072],
'Fund_Series': ['A', 'A', 'A'],
'Value': [1020.0, 1040.4, 1009.188],
'Dividend': [0.0, 0.0, 52.02]})
Я хотел бы выполнить некоторые операции взвешивания, указанные ниже, после группировки:
df['Pct_Change_Adjusted'] = df.groupby(['Fund_ID', 'Fund_Series'], as_index=False) \
.apply(lambda x: (x.Value + x.Dividend)/(x.Value.shift()+x.Dividend.shift()) ) \
.reset_index(drop=True).values[0]
print(df)
Date Dividend Fund_ID Fund_Series Value Pct_Change_Adjusted
0 2019-01-02 0.00 9072 A 1020.000 NaN
1 2019-01-03 0.00 9072 A 1040.400 0.02
2 2019-01-04 52.02 9072 A 1009.188 0.02
Есть ли здесь какие-либо альтернативы apply
, которые повысят эффективность или, по крайней мере, еще один способ сделать что-то !!
Примечание: я не говорю о даске и других парализациях, только о чистых пандах.
Обязательно:
Вычислить столбец Pct_Change_Adjusted
без использования apply.