J'ai défini une fonction pour créer un dataframe, mais j'obtiens deux listes dans chaque colonne, comment pourrais-je obtenir chaque élément de la liste comme une ligne distincte dans le dataframe comme indiqué ci-dessous.
number operation
0 1 8
1 2 16
2 3 24
3 4 34
Résultat:
number operation 0 [1, 2, 3, 4] [8, 16, 24, 32]
Ce que je veux vraiment:
a = [1, 2, 3, 4]
def function():
result = []
for i in range(0, len(a)):
number = [i for i in a]
operation = [8*i for i in a]
result.append({'number': number, 'operation': operation})
df = pd.DataFrame(result, columns=['number','operation'])
return df
function()
Quelqu'un peut-il m'aider s'il vous plaît? :)
3 Réponses :
Vos problèmes sont doubles, premièrement, vous insérez la liste entière de valeurs (au lieu de la valeur "courante") dans le tableau de résultats à chaque passage dans votre boucle for, et deuxièmement vous écrasez la dataframe à chaque fois. Il serait plus simple d'utiliser une compréhension de liste pour générer les valeurs du dataframe:
number operation 0 1 8 1 2 16 2 3 24 3 4 32
Sortie:
import pandas as pd
a = [1, 2, 3, 4]
def function():
result = [{'number' : i, 'operation' : 8*i} for i in a]
df = pd.DataFrame(result)
return df
print(function())
@saraycamargo pas de soucis - je suis heureux d'avoir pu aider.
import numpy as np
a = [1, 2, 3, 4]
def function():
for i in range(0, len(a)):
number = [i for i in a]
operation = [8*i for i in a]
v=np.rot90(np.array((number,operation)))
result=np.flipud(v)
df = pd.DataFrame(result, columns=['number','operation'])
return df
print (function())
number operation
0 1 8
1 2 16
2 3 24
3 4 32
Vous y êtes presque. Remplacez simplement (FYI: Pas besoin de créer un cadre de données pandas à l'intérieur de la boucle. Vous pouvez obtenir le même résultat avec la création de cadres de données pandas à l'extérieur de la boucle) Reportez-vous au code ci-dessous: number = [i for i in a] par number = a [i] et operation = [8 * i for i in a] code > avec operation = 8 * a [i] a = [1, 2, 3, 4]
def function():
result = []
for i in range(0, len(a)):
number = a[i]
operation = 8*a[i]
result.append({'number': number, 'operation': operation})
df = pd.DataFrame(res, columns=['number','operation'])
return df
function()
number operation
0 1 8
1 2 16
2 3 24
3 4 32