0
votes

Définir la valeur de la ligne de Dataframe sur une valeur numpue de matrice

version éditée de la publication originale em> strong>

J'ai un Dataframe qui est entièrement peuplé avec Nan. Spécifiquement: p> xxx pré>

J'ai le tableau numpy suivant: p> xxx pré>

J'ai essayé d'attribuer le tableau à 2019-10-30 Rangée par: p> xxx pré>

ainsi que p> xxx pré>

pour le moment, aboutissant tous deux: P>

print(histPrice['Allocation %'].iloc[2])

[Output]: 
 Symbols
SPY       NaN
GLD       NaN
TLT       NaN
MA        NaN
QQQ       NaN
TIP       NaN
Name: 2019-10-30 00:00:00, dtype: float64 


7 commentaires

essayez-vous de remplacer chaque troisième rangée de table avec une matrice NP?


@Tserenjamts Je viens d'essayer de remplacer une ligne spécifique avec un tableau


Histprice est de quel type?


@aprilangel Histprice est 'pandas.core.frame.dataframe'


@ Drive2Blue mais il ressemble à Histprice ['Allocation%'] est également un fichier de données.


@aprilangel correct, donc allocation% est un fichier de données dans un autre Dataframe, Histprice . En fait, cela semble être le problème. Utilisation de ILOC ou loc Pour affecter une valeur ne parvient pas à mettre à jour la valeur. Cependant, si je gère la même logique au niveau des parents (HISTPRIE), cela fonctionne. Je vais mettre à jour mon message avec des détails supplémentaires sur ce que je veux dire. Tu m'as pointé sur quelque chose que j'ai peut-être surveillé tout ce temps! Merci!!


@ Drive2Blue Hey, s'il vous plaît voir ma réponse.


3 Réponses :


0
votes

Vous devriez faire

df.iloc[2,:]=a[0]
df
Out[142]: 
        Stock: Bond: Gold:
2/01/19    NaN   NaN   NaN
1/31/19    NaN   NaN   NaN
1/30/19    33%   33%   33%
1/29/19    NaN   NaN   NaN


1 commentaires

Cela n'a pas fonctionné. Voir la section "Détails supplémentaires" dans mon poste mis à jour



0
votes

Si vous souhaitez mettre à jour la ligne entière avec votre tableau NUMPY, vous devriez pouvoir utiliser:

import pandas as pd
import numpy as np
df = pd.DataFrame(columns=['Stock','Bond','Gold'], index=['2/01/19','1/31/19','1/30/19','1/29/19'])
histPrice = {}
histPrice['Allocation %'] = df
x = np.array([2,3,1])
histPrice['Allocation %'].iloc[2] = x 
print(histPrice['Allocation %'].iloc[2])


11 commentaires

Cela n'a pas fonctionné. Voir la section "Détails supplémentaires" dans mon poste mis à jour


@ Drive2Blue On dirait que vous essayez d'attribuer la matrice à une colonne historique ['allocation%'] et non une ligne.


@ Drive2Blue Avez-vous un DataFrame enregistré dans un dictionnaire?


@ Drive2Blue basé sur votre question mise à jour, je me demande si vous avez un ou plusieurs DataFrames stockés dans un dictionnaire. Y a-t-il une chance de mettre à jour le mauvais Dataframe (je ne demandez-vous que parce que vous faites référence à deux types de données différents dans votre question mise à jour: Histprice [«Allocation%»], Histprice [«RP Allocation%»])?


Il n'y a qu'un seul dataframe, "allocation%". Désolé pour la confusion. J'ai révisé le post en conséquence


@ Driver2blue pas un problème du tout. Qu'est-ce que histprice ?


Histprice est 'pandas.core.frame.dataframe'


@ Drive2Blue hmm j'ai bien peur de ne pas bien comprendre comment votre Dataframe est structuré. Si Histprice est un dataframe Pandas, utilisez Histprice [«Allocation%»]. Iloc [2] = X signifierait que vous essayez d'attribuer la matrice NUMPY à l'index 2, de la colonne 'Allocation%', et seulement cette colonne ( c'est-à-dire pas la ligne).


Vous m'avez pointé sur quelque chose que j'ai peut-être surveillé tout ce temps. Pour clarifier, Allocation% est un fichier de données dans un autre Dataframe, Histprice . En fait, cela semble être le problème. L'utilisation d'ILOC ou de LOC pour affecter une valeur ne parvient pas invariablement à mettre à jour la valeur. Cependant, si je gère la même logique au niveau des parents (HISTPRIE), cela fonctionne. Je vais mettre à jour mon message avec des détails supplémentaires sur ce que je veux dire. Merci beaucoup pour tout votre temps et votre aide!


@ Drive2Blue Je me demandais s'il y avait un fichier de données imbriqué et je cherchais même à stocker des données de données dans les données de données car c'est un nouveau concept pour moi. Je suis content d'avoir été encore capable d'aider cependant.


Et comment insérer, disons, 2x10 dans 2 lignes de Dataframe? J'ai essayé d'utiliser df.loc [['Row1', 'Row2'] ,:] = my_array mais il jette une erreur. Merci



0
votes

Dans la description, vous stockez un fichier de données dans une autre ligne de données à une seule ligne.

En faisant ci-dessous, vous définissez une valeur dans la copie de votre Dataframe. p>

histPrice.loc[0, 'Allocation %'].iloc[2] = x


2 commentaires

hmmm, j'ai essayé votre suggestion, mais got KeyError: "allocation%" à la place, j'ai essayé histprice.loc [:, "allocation%"]. Iloc [2] = x Mais cela a abouti à ValueError: régler un élément de tableau avec une séquence :(


@ Drive2Blue N'utilisez pas de tableau, définissez X comme liste. devrait être fine =)