comment convertir une liste en un pandas dataframe
J'ai le code suivant:
rows =[]
for dt in new_info:
x = dt['state']
est = dt['estimates']
col_R = [val['choice'] for val in est if val['party'] == 'Rep']
col_D = [val['choice'] for val in est if val['party'] == 'Dem']
incumb = [val['party'] for val in est if val['incumbent'] == True ]
rows.append((x, col_R, col_D, incumb))
Maintenant, je veux convertir mes lignes de la liste dans un pandas bloc de données. La Structure de mes lignes de la liste est présentée ci-dessous et a ma liste de 32 entrées.
Quand je le convertir en une pandas trame de données, j'obtiens les entrées dans le bloc de données sous forme de liste. :
pd.DataFrame(rows, columns=["State", "R", "D", "incumbent"])
Mais je veux que mon bloc de données comme ceci
La nouvelle info variable ressemble à ceci
source d'informationauteur Elizabeth Susan Joseph
Vous devez vous connecter pour publier un commentaire.
Puisque vous l'esprit les objets dans les colonnes de listes, je voudrais utiliser un générateur pour supprimer les listes d'emballage de vos articles:
Le générateur fonctionne de la même façon à cette fonction, mais au lieu de matérialiser une liste inutilement dans la mémoire comme une étape intermédiaire, il vient passe à chaque ligne, qui serait dans la liste, pour le consommateur, la liste des lignes:
Puis composez votre DataFrame transmettre vos données à travers le générateur, le (ou la version de liste, si vous le souhaitez).
Ou vous pouvez utiliser une compréhension de liste ou d'un générateur d'expression (illustré) pour faire essentiellement le même:
Vous pouvez utiliser certaines construit en python liste de manipulation et de faire quelque chose comme:
qui va produire:
Évidemment
col2
n'a pas été formatée pour montrer le contraste.Modifier
Comme demandé par l'OP, si vous souhaitez mettre en place un
apply(lambda...)
à toutes les colonnes, alors vous pouvez soit définir explicitement chaque colonne d'une ligne qui ressemble à celui ci-dessus en remplaçant'col1'
avec chacun des noms de colonnes que vous souhaitez modifier ou vous pouvez simplement faire une boucle sur les colonnes comme ceci:si vous avez une trame de données de type
alors vous pouvez faire une boucle sur les colonnes
qui transforme un bloc de données qui commence comme:
et devient