Lebih
Menciptakan dataframe dari kamus mana entri yang memiliki panjang yang berbeda
Mengatakan saya memiliki sebuah kamus dengan 10 pasangan kunci-nilai. Setiap entri memegang numpy array. Namun, panjang array adalah tidak sama untuk semua dari mereka.
Bagaimana saya dapat membuat dataframe di mana masing-masing kolom memegang masuk yang berbeda?
Ketika saya mencoba:
pd.DataFrame(my_dict)
Saya mendapatkan:
ValueError: arrays must all be the same length
Cara untuk mengatasi hal ini? Saya senang untuk memiliki Panda menggunakan NaN
untuk pad kolom tersebut untuk lebih pendek entri.
90
7
Di Python 3.x:
Di Python 2.x:
ganti
d.item()
dengand.iteritems()
.Berikut ini's cara yang mudah untuk melakukannya:
Cara merapikan sintaks anda, tapi tetap pada dasarnya melakukan hal yang sama seperti ini jawaban yang lain, adalah di bawah ini:
Serupa sintaks yang ada untuk daftar, terlalu:
Sintaks lain untuk daftar:
Dalam semua kasus ini, anda harus berhati-hati untuk memeriksa apa yang datatype
panda
akan kira untuk kolom. Kolom berisiNaN
(hilang) nilai-nilai yang akan dikonversi ke lampung, misalnya.Meskipun hal ini tidak langsung menjawab OP's pertanyaan. Saya menemukan ini menjadi solusi yang sangat baik untuk kasus saya, ketika saya sudah tidak seimbang array dan I'd ingin berbagi:
dari panda dokumentasi
Anda juga dapat menggunakan
pd.concat
bersamaaxis=1
daftarpd.Seri
benda-benda:Kedua baris berikut bekerja dengan sempurna :
Tapi dengan %waktuhal pada Jupyter, I've punya rasio kecepatan 4x B vs, yang cukup mengesankan, terutama ketika bekerja dengan data yang besar set (terutama dengan besar jumlah kolom/fitur).
Jika anda don't ingin menunjukkan
NaN
dan anda memiliki dua panjang tertentu, menambahkan 'ruang' di setiap sisa sel juga akan bekerja.Jika anda memiliki lebih dari 2 panjang entri, disarankan untuk membuat fungsi yang menggunakan metode yang sama.