Exemples de comment créer une dataframe pandas à partir d'un dictionnaire python:
Créer une dataframe à partir d'un dictionnaire python (méthode 1)
Pour créer une dataframe à partir d'un dictionnaire python :
d = {
'Name': ['Ben', 'John', 'Emma', 'Zoe'],
'Age': [40, 56, 34, 12]
}
une solution est de faire
import pandas as pd
df = pd.DataFrame(d)
donne
Name Age
0 Ben 40
1 John 56
2 Emma 34
3 Zoe 12
Créer une dataframe à partir d'un dictionnaire python (méthode 2)
Une autre solution consiste à utiliser pandas.DataFrame.from_dict
df = pd.DataFrame.from_dict(d)
print(df)
donne
Name Age
0 Ben 40
1 John 56
2 Emma 34
3 Zoe 12
L'avantage est d'utiliser des paramètres tels que "orient":
df = pd.DataFrame.from_dict(d, orient='index')
donne alors
0 1 2 3
Name Ben John Emma Zoe
Age 40 56 34 12
Ajoutez des noms de colonne :
df = pd.DataFrame.from_dict(d, orient='index', columns=['User 1', 'User 2', 'User 3', 'User 4'])
donne
User 1 User 2 User 3 User 4
Name Ben John Emma Zoe
Age 40 56 34 12
Ajouter une nouvelle ligne dans un dataframe
Autre exemple, ajoutez une nouvelle ligne dans un dataframe existant :
import pandas as pd
d = {
'Name': ['Ben', 'John', 'Emma', 'Zoe'],
'Age': [40, 56, 34, 12]
}
df = pd.DataFrame.from_dict(d)
Name Age
0 Ben 40
1 John 56
2 Emma 34
3 Zoe 12
Créer une nouvelle dataframe à partir d'un dictionnaire python
new_d = {
'Name': ['Paula'],
'Age': [67]
}
df_new_row = pd.DataFrame.from_dict(new_d)
Pour ajouter une nouvelle ligne, une solution consiste à utiliser concat() (voir Comment fusionner / concatener deux dataframes avec pandas en python ? et Comment créer une DataFrame vide avec pandas et la remplir ligne par ligne en python ?)
df = pd.concat([df,df_new_row], ignore_index=True)
donne
Name Age
0 Ben 40
1 John 56
2 Emma 34
3 Zoe 12
4 Paula 67
Corriger l'erreur "If using all scalar values, you must pass an index"
new_d = {
'Name': 'Paula',
'Age': 67
}
df_new_row = pd.DataFrame.from_dict(new_d)
donne
ValueError: If using all scalar values, you must pass an index
C'est parce que les valeurs du dictionnaire new_d ne sont pas une liste.
Pour résoudre ce problème, ajoutez simplement [] :
new_d = {
'Name': ['Paula'],
'Age': [67]
}
df_new_row = pd.DataFrame.from_dict(new_d)