Menambahkan ke DataFrame kosong di Pandas?

212

Apakah mungkin menambahkan frame data kosong yang tidak mengandung indeks atau kolom?

Saya sudah mencoba melakukan ini, tetapi tetap mendapatkan dataframe kosong di akhir.

misalnya

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

Hasilnya terlihat seperti ini:

Empty DataFrame
Columns: []
Index: []
ericmjl
sumber
Menjawab pertanyaan serupa di sini: stackoverflow.com/questions/13784192/… . pada dasarnya sesuatu seperti ininewDF = pd.DataFrame() #creates a new dataframe that's empty newDF = newDF.append(oldDF, ignore_index = True) # ignoring index is optional
geekidharsh
Tambahkan apa? Nilai tunggal? daftar Python? Seri panda? Dataframe Lain? Komentar trailing contoh Anda menunjukkan bahwa Anda berarti kerangka data lain - jadi berikan kerangka data dalam kode contoh Anda, sudah :)
smci
Dan ketika Anda mengatakan "Hasilnya terlihat seperti ini", saya harap Anda tidak mencoba untuk langsung melakukannya print(df.append(data)), karena append()selalu mengembalikan None dengan Python
smci

Jawaban:

388

Itu harus bekerja:

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

Tapi yang appendtidak terjadi di tempat , sehingga Anda harus menyimpan output jika Anda ingin:

>>> df
Empty DataFrame
Columns: []
Index: []
>>> df = df.append(data)
>>> df
   A
0  0
1  1
2  2
DSM
sumber
8
Terima kasih! Itu berhasil! Saya tidak menyadari bahwa saya harus menyimpan hasilnya ... Saya mungkin harus membaca dokumentasi dengan lebih baik, tetapi saya menghargainya, @DSM!
ericmjl
9
saya selalu lupa Anda harus menugaskannya!
Andy B
66
sebenarnya penambahan itu tidak terjadi di tempat adalah info paling penting di sini;)
refuzee
6
Tidak tahu mengapa contoh Pandas tidak menunjukkan hal itu. Terima kasih atas bantuan Anda!
Drew Szurko
2
perhatikan bahwa setidaknya pada bulan Juni 2018 jika Anda ingin baris baru untuk diindeks sendiri, Anda harus menulis df.append (data, ign_index = True). Terima kasih atas jawaban Anda!
Adam B
98

Dan jika Anda ingin menambahkan baris, Anda dapat menggunakan kamus:

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

yang memberi Anda:

   age  height name
0    9       2  Zed
dval
sumber
Performa rendah, khususnya ketika berhadapan dengan data besar
raullalves
2
Bisakah Anda mengaitkannya dengan alternatif lain yang diusulkan, @raullalves?
Bouncner
23

Anda dapat menggabungkan data dengan cara ini:

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

InfoDF = pd.concat([InfoDF,tempDF])
Deepish
sumber
Terima kasih, saya mencoba konsernya. Tetapi mengapa keduanya menambahkan dan menyetujui jika mereka dapat melakukan pekerjaan yang sama
Nitesh kumar
Utas ini mungkin memberikan penjelasan yang bagus: stackoverflow.com/questions/15819050/…
Deepish