0
votes

Comment stocker les résultats d'A pour une boucle à un Dataframe donné une colonne / rangée spécifique?

J'ai un Dataframe avec des signaux et des retours différents. Je veux faire ce qui suit:

  1. Sous-ensemble Un signal spécifique LI>
  2. Calculez le retour annualisé LI>
  3. Store Résulde à un Dataframe LI> ol>

    Mon Dataframe ressemble à ceci: Entrez la description de l'image ici P>

    Mon code ressemble à ceci:

    df = portbase.groupby(['signalname','year'])['return'].apply(lambda x: (np.prod(1+x/100)-1) * 100).reset_index().T
    


0 commentaires

3 Réponses :


0
votes

Essayez ce code:

df = portbase.groupby(['signalname','year'])['return'].apply(lambda x: (np.prod(1+x/100)-1) * 100).unstack().T


4 commentaires

Votre solution fonctionne bien! La seule chose est que mes signaux sont maintenant confidens dans des rangées et non des colonnes. Donc, la 1ère colonne sont mes signaux, puis au 2e sont les années (1990-2019) et dans la 3ème des rendements annuels. Savez-vous comment transposer la première colonne afin que j'ai mes signaux comme des en-têtes?


J'ai édité ma question ci-dessus. Malheureusement, le .t ne transpose pas ma colonne de signal.


Malheureusement, cela ne fonctionne toujours pas. J'ai mis à jour l'image dans ma question ci-dessus.


Fonctionne parfaitement! Merci!



0
votes

c'est possible avec pivot_table pour cela.

signal_cols = ['signalname1', 'signalname2']##..
agg_func = lambda x: np.prod(1+x/100)-1)
result = my_df.pivot_table(index='year', columns=signal_cols, values='return', aggfunc=agg_func)


0 commentaires

0
votes

première chose est qu'il semble que vous n'utilisez pas vos calculs pour les sauver. J et moi sommes les signaux et les années.

du haut de ma tête La fonction .LOC () est destinée à accéder à / lire des rangées et des colonnes par leur nom. Vous essayez donc essentiellement d'accéder aux données d'années et de signaux de rendements.

Vous devrez peut-être apporter vos résultats dans listes , puis effectuez une image de données en dehors d'eux.

J'espère que ma réponse a aidé quelque peu.


0 commentaires