2017-10-17 2 views
1

Comme le dit la question, j'ai une trame de données qui est assez grande, mais ressemble à:Comment puis-je prendre un dataframe et le diviser en listes individuelles par colonne?

 ID Count ValueX Value 2 Value 3 
RowX 1  234.  255.  yes.  yes 
RowY 1  123.  135.  543.  342 
RowW 1  234.  235.  yes.  yes 
RowJ 1  123.  115.  543.  342 
RowA 1  234.  285.  yes.  yes 
RowR 1  123.  165.  543.  342 
RowX 2  234.  255.  yes.  yes 
RowY 2  123.  135.  543.  342 
RowW 2  234.  235.  yes.  yes 
RowJ 2  123.  115.  543.  342 
RowA 2  234.  285.  yes.  yes 
RowR 2  123.  165.  543.  342 
. 
. 
. 
RowX 1233 234.  255.  yes.  yes 
RowY 1233 123.  135.  543.  342 
RowW 1233 234.  235.  yes.  yes 
RowJ 1233 123.  115.  543.  342 
RowA 1233 234.  285.  yes.  yes 
RowR 1233 123.  165.  543.  342 

Ce que je veux être en mesure de prendre la df et divisée en listes par colonne, de sorte que je finis avec des listes pour ID, Count, ValueX, Value 2 et le reste. À l'heure actuelle, je le fais comme:

IDlist = df_original.ID.tolist() 
Countlist = df_original.Count.tolist() 
... 

Cela me donne la solution que j'ai besoin, mais je veux savoir s'il y a un moyen plus court de diviser la df en listes.

+0

Quand vous dites «plus court», voulez-vous dire des lignes de code plus courtes? Ou voulez-vous une boucle qui fait une liste de listes? – ASGM

+0

Soit vraiment, maintenant je crée manuellement 33 listes – tushariyer

Répondre

0

Vous pouvez créer des listes imbriquées:

L = df.values.T.tolist() 

print (L) 
[[1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2], 
[234.0, 123.0, 234.0, 123.0, 234.0, 123.0, 234.0, 123.0, 234.0, 123.0, 234.0, 123.0], 
[255.0, 135.0, 235.0, 115.0, 285.0, 165.0, 255.0, 135.0, 235.0, 115.0, 285.0, 165.0], 
['yes.', '543.', 'yes.', '543.', 'yes.', '543.','yes.','543.','yes.','543.','yes.','543.'], 
['yes', '342', 'yes', '342', 'yes', '342', 'yes', '342', 'yes', '342', 'yes', '342']] 

Vous pouvez accéder par la position comme:

print (L[0]) 
[1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2] 

Ou mieux créer le dictionnaire de list s:

d = df.to_dict('l') 
print (d) 
{ 
'Count':[234.0, 123.0, 234.0, 123.0, 234.0, 123.0, 234.0, 123.0, 234.0, 123.0, 234.0, 123.0], 
'Value 3':['yes', '342', 'yes', '342', 'yes', '342','yes','342', 'yes', '342', 'yes', '342'], 
'ID': [1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2], 
'Value 2': ['yes.', '543.', 'yes.', '543.', 'yes.', '543.', 
      'yes.', '543.', 'yes.', '543.', 'yes.', '543.'], 
'ValueX':[255.0, 135.0, 235.0, 115.0, 285.0, 165.0, 255.0, 135.0, 235.0, 115.0, 285.0,165.0] 
} 

Vous pouvez accéder par Nom de la colonne:

print (d['ID']) 
[1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2] 
+0

Pouvez-vous aller un peu plus dans ce que cela fait? – tushariyer

+0

Ok, la seule question est de savoir si vous avez besoin de listes imbriquées? Ou pas? – jezrael

+0

Je n'ai pas vraiment besoin de listes imbriquées, non – tushariyer