Вы можете использовать exp и затем нормализовать
import numpy as np
s = np.exp(np.linspace(0,1,51))
s = (s * 3000)/ np.sum(s)
np.sum(s)
сумма равна
2999.9999999999995
серия составляет
array([34.17786997, 34.86830875, 35.57269531, 36.29131142, 37.02444454,
37.77238794, 38.53544079, 39.31390833, 40.10810196, 40.91833937,
41.74494465, 42.58824847, 43.44858816, 44.32630787, 45.22175868,
46.13529881, 47.06729367, 48.01811607, 48.98814636, 49.97777256,
50.98739054, 52.01740415, 53.06822542, 54.14027469, 55.23398079,
56.34978121, 57.4881223 , 58.64945941, 59.83425708, 61.04298925,
62.27613944, 63.5342009 , 64.8176769 , 66.12708083, 67.46293648,
68.82577819, 70.21615114, 71.63461149, 73.08172663, 74.55807544,
76.06424847, 77.60084822, 79.16848934, 80.76779892, 82.39941668,
84.06399532, 85.76220067, 87.49471205, 89.26222248, 91.06543899,
92.90508288])
часть - ii, делая это нацелое df
joined_df = pd.merge(df_1,df_2,on='F_date')
def add_series(grp):
n_rows = grp.shape[0]
val = grp['Value'].min()
s = np.exp(np.linspace(0,1,n_rows))
s = (s * val)/ np.sum(s)
grp['col'] = s
return grp
joined_df.groupby('F_date').apply(add_series)
** не проверено. но это должно дать вам идею