Saya memiliki kerangka data:
s1 = pd.Series([5, 6, 7])
s2 = pd.Series([7, 8, 9])
df = pd.DataFrame([list(s1), list(s2)], columns = ["A", "B", "C"])
A B C
0 5 6 7
1 7 8 9
[2 rows x 3 columns]
dan saya perlu menambahkan baris pertama [2, 3, 4] untuk mendapatkan:
A B C
0 2 3 4
1 5 6 7
2 7 8 9
Saya sudah mencoba append()
dan concat()
berfungsi tetapi tidak dapat menemukan cara yang tepat untuk melakukannya.
Bagaimana cara menambahkan / memasukkan seri ke dataframe?
s1.values
daripadalist(s1)
karena Anda akan membuat daftar yang sama sekali baru menggunakanlist(s1)
.Jawaban:
Cukup tetapkan baris ke indeks tertentu, menggunakan
loc
:Dan Anda mendapatkan, seperti yang diinginkan:
Lihat di Pengindeksan dokumentasi Pandas : Pengaturan dengan pembesaran .
sumber
df.loc[-1] = df.iloc[[0]]
, dan menyisipkan itu? Bingkai dilengkapi dengan kolom indeks tambahan yang memberikan kesalahanValueError: cannot set a row with mismatched columns
(lihat stackoverflow.com/questions/47340571/… )df.loc[-1] = [2, 3, 4] # adding a row
agak menyesatkan, karena-1
bukan baris / elemen terakhir, seperti untuk array Python.Tidak yakin bagaimana Anda memanggilnya
concat()
tetapi itu harus bekerja selama kedua objek memiliki tipe yang sama. Mungkin masalahnya adalah Anda perlu mentransmisikan vektor kedua ke bingkai data? Menggunakan df yang Anda tentukan berikut ini berfungsi untuk saya:sumber
Salah satu cara untuk mencapainya adalah
Umumnya, yang paling mudah adalah menambahkan kerangka data, bukan seri. Dalam kasus Anda, karena Anda ingin baris baru menjadi "di atas" (dengan id awal), dan tidak ada fungsi
pd.prepend()
, pertama-tama saya membuat kerangka data baru dan kemudian menambahkan yang lama.ignore_index
akan mengabaikan indeks lama yang sedang berlangsung di dataframe Anda dan memastikan bahwa baris pertama benar-benar dimulai dengan indeks1
alih-alih memulai ulang dengan indeks0
.Penafian Umum: Cetero censeo ... menambahkan baris adalah operasi yang sangat tidak efisien. Jika Anda peduli dengan kinerja dan entah bagaimana dapat memastikan untuk terlebih dahulu membuat kerangka data dengan indeks yang benar (lebih panjang) dan kemudian hanya memasukkan baris tambahan ke dalam kerangka data, Anda pasti harus melakukannya. Lihat:
Sejauh ini, kami memiliki apa yang Anda miliki sebagai
df
:Tetapi sekarang Anda dapat dengan mudah memasukkan baris sebagai berikut. Karena ruang telah dialokasikan sebelumnya, ini lebih efisien.
sumber
Saya mengumpulkan fungsi pendek yang memungkinkan sedikit lebih banyak fleksibilitas saat menyisipkan baris:
yang selanjutnya dapat disingkat menjadi:
Kemudian Anda bisa menggunakan sesuatu seperti:
di mana
2
posisi indeks didf
mana Anda ingin menyisipkandf_new
.sumber
Kita bisa gunakan
numpy.insert
. Ini memiliki keunggulan fleksibilitas. Anda hanya perlu menentukan indeks yang ingin Anda sisipkan.Karena
np.insert(df.values, 0, values=[2, 3, 4], axis=0)
, 0 memberi tahu fungsi tempat / indeks yang Anda inginkan untuk menempatkan nilai baru.sumber
ini mungkin tampak terlalu sederhana tetapi luar biasa bahwa fungsi baris baru sisipkan sederhana tidak built in. Saya telah membaca banyak tentang menambahkan df baru ke aslinya, tapi saya bertanya-tanya apakah ini akan lebih cepat.
sumber
Di bawah ini akan menjadi cara terbaik untuk menyisipkan baris ke dalam bingkai data panda tanpa mengurutkan dan menyetel ulang indeks:
sumber
Sangat mudah untuk menambahkan baris ke dalam panda
DataFrame
:Buat kamus Python biasa dengan nama kolom yang sama seperti milik Anda
Dataframe
;Gunakan
pandas.append()
metode dan berikan nama kamus Anda, di mana.append()
metode pada instance DataFrame;Tambahkan
ignore_index=True
tepat setelah nama kamus Anda.sumber
concat()
tampaknya sedikit lebih cepat daripada penyisipan dan pengindeksan ulang baris terakhir. Jika seseorang bertanya-tanya tentang kecepatan dua pendekatan teratas:17.1 s ± 705 ms per loop (rata-rata ± std. Dev. Dari 7 run, masing-masing 1 loop)
6,53 s ± 127 ms per loop (rata-rata ± std. Dev. Dari 7 run, masing-masing 1 loop)
sumber
Anda cukup menambahkan baris ke akhir DataFrame, lalu menyesuaikan indeks.
Misalnya:
Atau gunakan
concat
sebagai:sumber
Cara termudah menambahkan baris dalam bingkai data pandas adalah:
Contoh:
NB: panjang daftar Anda harus sesuai dengan bingkai data.
sumber