3 votes

Comment ajouter des valeurs de ndarray dans les lignes de colonnes particulières d'un dataframe ?

J'ai une fonction qui renvoie un ndarray comme ceci

[0 1 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0] 

Maintenant, j'ai un cadre de données df avec les colonnes A,B,C,...,Z ; mais le tableau que nous obtenons n'a que 20 valeurs. Par conséquent, je veux trouver un moyen tel que pour chaque tableau que j'obtiens en sortie, je suis capable de le stocker dans le fichier df comme ceci (A,B,W,X,Y,Z doivent être laissés en blanc) :

__| A | B | C | D | E | F | ...
0 |nan|nan| 0 | 1 | 0 | 0 | ...
1 |nan|nan| 1 | 1 | 0 | 1 | ...
.
. 
.

3voto

Nihal Points 2628

J'ai créé un petit exemple de votre problème. J'espère que cela vous aidera.

import pandas as pd
import numpy as np

df = pd.DataFrame(np.nan, index=[0, 1, 2, 3], columns=['A', 'B', 'C'])
data = np.array([[0, 1],
                   [1, 1]])
print(df)
# df[['B', 'C']] = pd.DataFrame.from_records(data)
df[['B', 'C']] = pd.DataFrame(data)

print(df)

sortie :

    A   B   C
0 NaN NaN NaN
1 NaN NaN NaN
2 NaN NaN NaN
3 NaN NaN NaN

    A    B    C
0 NaN  0.0  1.0
1 NaN  1.0  1.0
2 NaN  NaN  NaN
3 NaN  NaN  NaN

1voto

Vibhu Points 241

Je n'ai pas réussi à obtenir ce que je voulais grâce aux suggestions affichées ici. Cependant, j'ai trouvé la solution moi-même. Je la partage ici pour que la communauté puisse s'y référer.

import pandas as pd
import numpy as np

df = pd.DataFrame(columns=[chr(i) for i in range(ord('A'),ord('Z')+1)])

print(df)
Empty DataFrame
Columns: [A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z]
Index: []

[0 rows x 26 columns]
list1 = [i for i in range(101,121)]
arr1d = np.array(list1)

arr1d
array([101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
       114, 115, 116, 117, 118, 119, 120])
# Create alphabet list of uppercase letters
alphabet = []
for letter in range(ord('C'),ord('W')):
    alphabet.append(chr(letter))
alphabet
['C',
 'D',
 'E',
 'F',
 'G',
 'H',
 'I',
 'J',
 'K',
 'L',
 'M',
 'N',
 'O',
 'P',
 'Q',
 'R',
 'S',
 'T',
 'U',
 'V']
df = df.append(pd.Series(arr1d, index=alphabet), ignore_index=True)
#This line of code can be used for every new value of arr1d 

enter image description here

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X