Aggiungere a un DataFrame vuoto in Panda?


230

È possibile aggiungere a un data frame vuoto che non contiene indici o colonne?

Ho provato a farlo, ma continuo a ottenere un dataframe vuoto alla fine.

per esempio

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

Il risultato è questo:

Empty DataFrame
Columns: []
Index: []

Ha risposto a una domanda simile qui: stackoverflow.com/questions/13784192/… . fondamentalmente qualcosa di similenewDF = pd.DataFrame() #creates a new dataframe that's empty newDF = newDF.append(oldDF, ignore_index = True) # ignoring index is optional
geekidharsh

Aggiungi cosa? Un unico valore? una lista di Python? una serie di panda? Un altro Dataframe? Il tuo commento finale di esempio suggerisce che intendi un altro dataframe, quindi dai un dataframe nel tuo codice di esempio, già :)
smci

E quando dici "Il risultato è simile a questo", spero che tu non stia cercando di farlo direttamente print(df.append(data)), perché append()restituisce sempre Nessuno in Python
smci

Risposte:


415

Dovrebbe funzionare:

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

Ma il appendnon accadere sul posto , in modo da avere per memorizzare l'uscita se lo si desidera:

>>> df
Empty DataFrame
Columns: []
Index: []
>>> df = df.append(data)
>>> df
   A
0  0
1  1
2  2

9
Grazie! Ha funzionato! Non mi ero reso conto che dovevo memorizzare l'output ... probabilmente avrei dovuto leggere meglio la documentazione, ma lo apprezzo, @DSM!
ericmjl

9
dimentico sempre che devi assegnarlo!
Andy B

72
in realtà l'appendice non avviene sul posto è l'informazione più importante qui;)
refuzee il

8
Non ho idea del perché gli esempi di Panda non lo dimostrino. Grazie per l'aiuto!
Drew Szurko

2
nota che almeno a giugno 2018 se desideri che le nuove righe si autoindicizzino da sole, dovresti scrivere df.append (data, ignore_index = True). Grazie per la magnifica risposta!
Adam B

104

E se vuoi aggiungere una riga, puoi usare un dizionario:

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

che ti dà:

   age  height name
0    9       2  Zed

1
Prestazioni basse, specialmente quando si tratta di dati di grandi dimensioni
raullalves

3
Puoi metterlo in relazione con le altre alternative proposte, @raullalves?
Bouncner

25

Puoi concatenare i dati in questo modo:

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

InfoDF = pd.concat([InfoDF,tempDF])

Grazie, ho provato il concat. Ma perché entrambi aggiungono e concatenano se possono fare lo stesso lavoro
Nitesh kumar

Questo thread potrebbe dare una buona spiegazione: stackoverflow.com/questions/15819050/...
Deepish
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.