Ajout à un DataFrame vide dans Pandas?

212

Est-il possible d'ajouter à un bloc de données vide qui ne contient aucun index ou colonne?

J'ai essayé de le faire, mais continuez à obtenir une trame de données vide à la fin.

par exemple

df = pd.DataFrame()
data = ['some kind of data here' --> I have checked the type already, and it is a dataframe]
df.append(data)

Le résultat ressemble à ceci:

Empty DataFrame
Columns: []
Index: []
ericmjl
la source
Répondu à une question similaire ici: stackoverflow.com/questions/13784192/… . essentiellement quelque chose comme çanewDF = pd.DataFrame() #creates a new dataframe that's empty newDF = newDF.append(oldDF, ignore_index = True) # ignoring index is optional
geekidharsh
Ajouter quoi? Une seule valeur? une liste Python? une série pandas? Un autre Dataframe? Votre exemple de commentaire de fin suggère que vous voulez dire une autre trame de données - alors donnez déjà une trame de données dans votre exemple de code :)
smci
Et quand vous dites "Le résultat ressemble à ceci", j'espère que vous n'essayez pas de le faire directement print(df.append(data)), car append()renvoie toujours None en Python
smci

Réponses:

388

Cela devrait fonctionner:

>>> df = pd.DataFrame()
>>> data = pd.DataFrame({"A": range(3)})
>>> df.append(data)
   A
0  0
1  1
2  2

Mais le appendne se fait pas en place , de sorte que vous devrez stocker la sortie si vous le souhaitez:

>>> df
Empty DataFrame
Columns: []
Index: []
>>> df = df.append(data)
>>> df
   A
0  0
1  1
2  2
DSM
la source
8
Je vous remercie! Ça a marché! Je ne savais pas que je devais stocker la sortie ... J'aurais probablement dû mieux lire la documentation, mais je l'apprécie, @DSM!
ericmjl
9
j'oublie toujours que vous devez l'attribuer!
Andy B
66
en fait, cet ajout ne se produit pas en place est l'info la plus importante ici;)
refuzee
6
Aucune idée pourquoi les exemples de Pandas ne le montrent pas. Merci de votre aide!
Drew Szurko
2
notez qu'au moins en juin 2018 si vous souhaitez que les nouvelles lignes s'auto-indexent elles-mêmes, vous devez écrire df.append (data, ignore_index = True). Merci pour la bonne réponse!
Adam B
98

Et si vous souhaitez ajouter une ligne, vous pouvez utiliser un dictionnaire:

df = pd.DataFrame()
df = df.append({'name': 'Zed', 'age': 9, 'height': 2}, ignore_index=True)

ce qui vous donne:

   age  height name
0    9       2  Zed
dval
la source
Performances faibles, spécialement lorsqu'il s'agit de données volumineuses
raullalves
2
Pouvez-vous mettre cela en relation avec les autres alternatives proposées, @raullalves?
Bouncner
23

Vous pouvez concaténer les données de cette manière:

InfoDF = pd.DataFrame()
tempDF = pd.DataFrame(rows,columns=['id','min_date'])

InfoDF = pd.concat([InfoDF,tempDF])
Deepish
la source
Merci, j'ai essayé le concat. Mais pourquoi à la fois ajouter et concaturer s'ils peuvent faire le même travail
Nitesh kumar
Ce fil pourrait donner une bonne explication: stackoverflow.com/questions/15819050/…
Deepish