Market ['AAPL'] est une base de données avec le rendement boursier quotidien d'Apple

J'ai remarqué ça:

market['AAPL'].apply(lambda x: np.exp(x))

market['AAPL'].apply(lambda x: np.cumprod(np.exp(x)))

Les deux donnent les mêmes résultats. Pourquoi np.cumprod ne fonctionne-t-il pas?

0
lostwanderer 29 mai 2020 à 06:25

3 réponses

Meilleure réponse

Vous voulez probablement appliquer le produit cumulatif dans la colonne AAPL. Votre tentative actuelle ne fonctionne pas, car .apply fonctionne par ligne. En conséquence, np.cumprod est appelé à chaque fois pour un seul nombre, pas pour un tableau de nombres.

Essayez plutôt quelque chose comme ceci:

import pandas as pd
import numpy as np

aapl = {"AAPL": np.linspace(1, 2, 10)}
df = pd.DataFrame(appl)
# Calculate exp for the column, then calculate 
# the cumulative product over the column
df['cum-AAPL'] = np.exp(df['AAPL']).cumprod())
0
0 0 29 mai 2020 à 04:09

Puisque x est un nombre, c'est np.exp est un nombre, et le produit d'un nombre est lui-même.

0
Igor Rivin 29 mai 2020 à 03:57

Essayez le code suivant:

import pandas as pd
import numpy as np

dict = {"pop": [1,2,3,4,5,6] }
df = pd.DataFrame(dict)
print(df['pop'].apply(lambda x: np.cumprod(np.exp(x))[0]))

Production:

0      2.718282
1      7.389056
2     20.085537
3     54.598150
4    148.413159
5    403.428793
Name: pop, dtype: float64
0
dexter 29 mai 2020 à 03:57