Il est facile de transformer une liste de listes en un dataframe pandas:
import pandas as pd
df = pd.DataFrame([[1,2,3],[3,4,5]])
Mais comment puis-je transformer df en une liste de listes?
lol = df.what_to_do_now?
print lol
# [[1,2,3],[3,4,5]]
Vous pouvez accéder au tableau sous-jacent et appeler sa tolist
méthode:
>>> df = pd.DataFrame([[1,2,3],[3,4,5]])
>>> lol = df.values.tolist()
>>> lol
[[1L, 2L, 3L], [3L, 4L, 5L]]
L
ajouts dans la sortie?df.to_numpy().tolist()
.Si les données ont des étiquettes de colonne et d'index que vous souhaitez conserver, il existe quelques options.
Exemple de données:
La
tolist()
méthode décrite dans d'autres réponses est utile mais ne fournit que les données de base - ce qui peut ne pas suffire, selon vos besoins.Une approche consiste à convertir le
DataFrame
en json en utilisantdf.to_json()
, puis à l'analyser à nouveau. Ceci est lourd mais présente certains avantages, car lato_json()
méthode comporte des options utiles.Lourd mais peut être utile.
La bonne nouvelle est qu'il est assez simple de créer des listes pour les colonnes et les lignes:
Cela donne:
Si le
None
nom de l'index est gênant, renommez-le:Ensuite:
la source
DataFrame.itertuples()
ouDataFrame.to_records()
pour tout cela?Je ne sais pas si cela répondra à vos besoins, mais vous pouvez aussi faire:
Ceci est juste un tableau numpy du module ndarray, qui vous permet de faire toutes les choses habituelles du tableau numpy.
la source
Je voulais conserver l'index, j'ai donc adapté la réponse originale à cette solution:
Vous pouvez maintenant le coller ailleurs (par exemple pour le coller dans une question de Stack Overflow) et le recréer ultérieurement:
la source
Peut-être que quelque chose a changé mais cela a rendu une liste de ndarrays qui ont fait ce dont j'avais besoin.
la source
Remarque: j'ai vu de nombreux cas sur Stack Overflow où la conversion d'une série Pandas ou d'un DataFrame en un tableau NumPy ou des listes Python simples est totalement inutile. Si vous êtes nouveau dans la bibliothèque, pensez à vérifier si la fonctionnalité dont vous avez besoin est déjà offerte par ces objets Pandas.
Pour citer un commentaire de @jpp:
Si un Pandas DataFrame / Series ne fonctionne pas, vous pouvez utiliser les méthodes intégrées
DataFrame.to_numpy
etSeries.to_numpy
.la source
for elem in some_series.values.tolist():
parce qu'ils ne savent pas que vous pouvez parcourir les éléments d'une série. Je ne sais pas ce qui est si horrible dans cette réponse.C'est très simple:
la source
DataFrame.values
ouDataFrame.to_numpy()
? Peu importe le fait qu'il crée un tableau NumPy, pas une simple liste Python."df.values" renvoie un tableau numpy. Cela ne préserve pas les types de données. Un entier peut être converti en flottant.
df.iterrows () retourne une série qui ne garantit pas non plus la conservation des types de données. Voir: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.iterrows.html
Le code ci-dessous se convertit en une liste de liste et préserve les types de données:
la source
Nous pouvons utiliser la fonction DataFrame.iterrows () pour parcourir chacune des lignes du Dataframe donné et construire une liste à partir des données de chaque ligne:
Nous pouvons extraire avec succès chaque ligne de la trame de données donnée dans une liste
la source