python - comment effectuer l'opération ci-dessous dans le dataframe python
Nov 08 2020
ci-dessous est mon df
df = pd.DataFrame({
'Sr. No': [1, 2, 3, 4, 5, 6],
'val1' : [2,3,2,4,1,2],
})
Je veux une sortie val2 comme le montrent les figures ci-dessous. row1 est identique à row1 de val1 mais row2 et ci-dessous est calculé à l'aide d'une formule, comme indiqué
Réponses
1 mlang Nov 08 2020 at 12:34
Donc toutes les lignes dépendent de la précédente car C4 dépend du calcul de C3 par exemple. Donc, ce que nous pouvons faire est d'opérer directement sur les tableaux numpy.
sr_no_vals = df['Sr. No'].values
val1_vals = df['val1'].values
val2_vals = [val1_vals[0]]
for i in range(1, len(sr_no_vals)):
calculated_value = (((1 + val2_vals[i - 1]) ** sr_no_vals[i - 1]) * (1 + val1_vals[i])) ** (1 / sr_no_vals[i])
val2_vals.append(calculated_value)
df['val2'] = val2_vals
Lorsque vous utilisez des tableaux numpy, nous pouvons également utiliser un compilateur juste à temps tel que numba pour accélérer l'opération d'un facteur énorme pour les données volumineuses.
@numba.jit(nopython=True)
def calc_val2(val1_vals, sr_no_vals):
val2_vals = [val1_vals[0]]
for i in range(1, len(sr_no_vals)):
calculated_value = (((1 + val2_vals[i - 1]) ** sr_no_vals[i - 1]) * (1 + val1_vals[i])) ** (1 / sr_no_vals[i])
val2_vals.append(calculated_value)
return val2_vals
df['val2'] = calc_val2(val1_vals, sr_no_vals)