J'ai un objet dataframe pandas qui ressemble à ceci:
one two three four five
0 1 2 3 4 5
1 1 1 1 1 1
J'aimerais générer une liste d'objets de liste dont le premier élément est l'étiquette de colonne et les valeurs de liste restantes sont les valeurs de données de colonne:
nested_list = [['one', 1, 1]
['two', 2, 1]
['three', 3, 1]
['four', 4, 1]
['five', 5, 1]]
Comment puis-je faire ceci? Merci pour l'aide.
Le moyen le plus simple est probablement list(dt.T.itertuples())
(où dt
est votre cadre de données). Cela génère une liste de tuples.
La réponse @BrenBarn ci-dessus donne une liste de n-uplets et non une liste telle que posée dans la question. J'avais spécifiquement besoin d'une liste de listes pour pouvoir écrire le cadre de données dans spreadsheed à l'aide de DataNitro. Adapté de l'exemple ci-dessus avec compréhension de la liste:
[list(x) for x in dt.T.itertuples()]
Cela donne le résultat au besoin
Strictement parlant si vous voulez des listes imbriquées (et non une liste de tuples), vous pouvez le faire
df.values.tolist()
as df.values est un tableau numpy. Cela vous donnera une liste de listes comme demandé:
[[0.0001313652121930252, 3.5915356549999985e-05],
[3.5915356549999985e-05, 0.00011634321240684215]]
Mon approche naïve consisterait à utiliser des éléments d’itère avec 'll' comme liste de listes et l comme liste unique.
df = DataFrame({'one':[1,1], 'two':[2,1], 'three':[3,1], 'four':[3,1] })
ll = []
for idx,row in df.iteritems():
l = row.values.tolist()
l.insert(0,idx)
ll.append(l)
Vieille question que je connais, mais cela me semble plus logique que ces autres réponses.
S'il s'agit de votre cadre de données:
df = pd.DataFrame({'one': [1, 1], 'three': [3, 1], 'four': [4, 1],
'five': [5, 1], 'two': [2, 1]},
columns=['one', 'two', 'three', 'four', 'five'])
Faire ceci:
df.T.reset_index().values.tolist()
Résultat
[['one', 1, 1], ['two', 2, 1], ['three', 3, 1], ['four', 4, 1], ['five', 5, 1]]