j'ai donc une dataframe de pandas géants de fichier csv ressemble à ceci:Python Pandas Dataframe: Comment créer des colonnes à partir d'une liste existante dans une base de données?
year,month,day,list
2017,09,01,"[('United States of America', 12345), (u'Germany', 54321), (u'Switzerland', 13524), (u'Netherlands', 24135), ... ]
2017,09,02,"[('United States of America', 6789), (u'Germany', 9876), (u'Switzerland', 6879), (u'Netherlands', 7968), ... ]
Le nombre de paires count pays dans la 4ème colonne de chaque ligne n'est pas identique.
Je veux élargir la liste dans la 4ème colonne, et de transformer la trame de données en quelque chose comme ceci:
year,month,day,country,count
2017,09,01,'United States of America',12345
2017,09,01,'Germany',54321
2017,09,01,'Switzerland',13524
2017,09,01,'Netherlands',24135
...
2017,09,02,'United States of America',6789
2017,09,02,'Germany',9876
2017,09,02,'Switzerland',6879
2017,09,02,'Netherlands',7968
...
Ma pensée était de générer 2 colonnes indépendantes, puis les rejoindre à l'origine dataframe. Peut-être quelque chose comme ceci:
country = df.apply(lambda x:[x['list'][0]]).stack().reset_index(level=1, drop=True)
count = df.apply(lambda x:[x['list'][1]]).stack().reset_index(level=1, drop=True)
df.drop('list', axis=1).join(country).join(count)
Le code ci-dessus est certainement ne fonctionne pas (je l'espère juste peut aider à exprimer ma pensée), et je ne sais pas comment étendre les colonnes de date ainsi.
Toute aide ou suggestion est très appréciée.
Merci beaucoup! Je vais essayer de cette façon et voir si cela fonctionne. –
Vous avez raison - la 4ème colonne n'était pas une liste réelle mais une chaîne, et votre méthode a résolu le problème avec la date. Je vous remercie! –