Saya memiliki DataFrame panda dengan 4 kolom dan saya ingin membuat DataFrame baru yang hanya memiliki tiga kolom. Pertanyaan ini mirip dengan: Mengekstrak kolom tertentu dari bingkai data tetapi untuk panda tidak R. Kode berikut ini tidak berfungsi, menimbulkan kesalahan, dan tentu saja bukan cara pandasnic untuk melakukannya.
import pandas as pd
old = pd.DataFrame({'A' : [4,5], 'B' : [10,20], 'C' : [100,50], 'D' : [-30,-50]})
new = pd.DataFrame(zip(old.A, old.C, old.D)) # raises TypeError: data argument can't be an iterator
Apa cara pandasnic untuk melakukannya?
sumber
old[['A']].copy()
, tanda kurung ganda diperlukan untuk membuat bingkai data baru. Perhatikan bahwaold['A'].copy()
hanya akan membuat Seri.Cara termudah adalah
.
sumber
Cara lain yang lebih sederhana adalah:
di mana
old.column_name
akan memberi Anda seri. Buat daftar semua seri kolom yang ingin Anda pertahankan dan serahkan ke konstruktor DataFrame. Kita perlu melakukan transpos untuk menyesuaikan bentuk.sumber
Bentuk fungsional generik
Khusus untuk masalah Anda di atas
sumber
Jika Anda ingin memiliki bingkai data baru maka:
sumber
Sejauh yang saya tahu, Anda tidak perlu menentukan sumbu saat menggunakan fungsi filter.
mengembalikan dataframe yang sama dengan
sumber
kolom menurut indeks:
sumber