Convertir une liste de listes en un cadre de données Pandas


31

J'essaie de convertir une liste de listes qui ressemble à la suivante en un cadre de données Pandas

[['New York Yankees ', '"Acevedo Juan"  ', 900000, ' Pitcher\n'], 
['New York Yankees ', '"Anderson Jason"', 300000, ' Pitcher\n'], 
['New York Yankees ', '"Clemens Roger" ', 10100000, ' Pitcher\n'], 
['New York Yankees ', '"Contreras Jose"', 5500000, ' Pitcher\n']]

J'essaie essentiellement de convertir chaque élément du tableau en un cadre de données pandas qui comporte quatre colonnes. Quelle serait la meilleure approche à ce sujet, car pd.Dataframe ne me donne pas tout à fait ce que je recherche.


voir cette question dans le débordement de pile: stackoverflow.com/questions/.../…
keramat

Réponses:


37
import pandas as pd

data = [['New York Yankees', 'Acevedo Juan', 900000, 'Pitcher'], 
        ['New York Yankees', 'Anderson Jason', 300000, 'Pitcher'], 
        ['New York Yankees', 'Clemens Roger', 10100000, 'Pitcher'], 
        ['New York Yankees', 'Contreras Jose', 5500000, 'Pitcher']]

df = pd.DataFrame.from_records(data)

4
Vous pouvez affiner un peu plus avec: DataFrame.from_records (données, colonnes = ['Équipe', 'Joueur', 'quelle-que-soit-ce', 'position'])
Juan Ignacio Gil

1
Existe-t-il un moyen de spécifier plus précisément les importations? Par exemple, je veux préciser qui DataFrame["Team"]doit se référer au premier élément de chaque sous-liste (ie data[i][0]) et DataFrame["Position"]se référer au dernier élément de chaque sous-liste (ie data[i][-1])?
Ivo

@Ivo: utilisez le columnsparamètre de DataFrame.from_records .
Emre

15

Une fois que vous avez les données:

import pandas as pd

data = [['New York Yankees ', '"Acevedo Juan"  ', 900000, ' Pitcher\n'], 
        ['New York Yankees ', '"Anderson Jason"', 300000, ' Pitcher\n'], 
        ['New York Yankees ', '"Clemens Roger" ', 10100000, ' Pitcher\n'], 
        ['New York Yankees ', '"Contreras Jose"', 5500000, ' Pitcher\n']]

Vous pouvez créer un cadre de données à partir de la transposition des données:

data_transposed = zip(data)
df = pd.DataFrame(data_transposed, columns=["Team", "Player", "Salary", "Role"])

Autrement:

df = pd.DataFrame(data)
df = df.transpose()
df.columns = ["Team", "Player", "Salary", "Role"]

5

Vous pouvez simplement le définir directement comme un bloc de données comme suit:

import pandas as pd

data = [['New York Yankees', 'Acevedo Juan', 900000, 'Pitcher'], 
        ['New York Yankees', 'Anderson Jason', 300000, 'Pitcher'], 
        ['New York Yankees', 'Clemens Roger', 10100000, 'Pitcher'], 
        ['New York Yankees', 'Contreras Jose', 5500000, 'Pitcher']]

data = pd.DataFrame(data)

1
import pandas as pd

data = [['New York Yankees', 'Acevedo Juan', 900000, 'Pitcher'],
        ['New York Yankees', 'Anderson Jason', 300000, 'Pitcher'], 
        ['New York Yankees', 'Clemens Roger', 10100000, 'Pitcher'], 
        ['New York Yankees', 'Contreras Jose', 5500000, 'Pitcher']]

df = pd.DataFrame(data)

0

Celui-ci était de loin le plus simple:

import pandas as pd

data = [['New York Yankees', 'Acevedo Juan', 900000, 'Pitcher'], 
        ['New York Yankees', 'Anderson Jason', 300000, 'Pitcher'], 
        ['New York Yankees', 'Clemens Roger', 10100000, 'Pitcher'], 
        ['New York Yankees', 'Contreras Jose', 5500000, 'Pitcher']]

data = pd.DataFrame(data)

maintenant, si les clés sont la première liste dans la liste des listes (données [0]), vous pouvez les affecter aux en-têtes de colonne dans la trame de données comme ceci:

import pandas as pd

data = [['key1', 'key2', key3, 'key4'], 
    ['New York Yankees', 'Anderson Jason', 300000, 'Pitcher'], 
    ['New York Yankees', 'Clemens Roger', 10100000, 'Pitcher'], 
    ['New York Yankees', 'Contreras Jose', 5500000, 'Pitcher']]

data = pd.DataFrame(data[1:], columns=data[0])
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.