Pandas: buat dataframe dari dict dengan panjang berbeda
Anda dapat menggunakan sintaks dasar berikut untuk membuat pandas DataFrame dari kamus yang entrinya memiliki panjang berbeda:
import pandas as pd df = pd. DataFrame (dict([(key, pd. Series (value)) for key, value in some_dict. items ()]))
Sintaks ini mengubah daftar array kamus menjadi daftar seri pandas.
Hal ini memungkinkan kita membuat pandas DataFrame dan cukup mengisi nilai NaN untuk memastikan bahwa setiap kolom di DataFrame yang dihasilkan memiliki panjang yang sama.
Contoh berikut menunjukkan cara menggunakan sintaksis ini dalam praktiknya.
Contoh: Buat Pandas DataFrame dari dict dengan panjang berbeda
Misalkan kita memiliki kamus berikut yang berisi entri dengan panjang berbeda:
#create dictionary whose entries have different lengths some_dict = dict(A=[2, 5, 5, 7, 8], B=[9, 3], C=[4, 4, 2]) #view dictionary print (some_dict) {'A': [2, 5, 5, 7, 8], 'B': [9, 3], 'C': [4, 4, 2]}
Jika kami mencoba menggunakan fungsi from_dict() untuk mengonversi kamus ini menjadi DataFrame pandas, kami akan menerima kesalahan:
import pandas as pd #attempt to create pandas DataFrame from dictionary df = pd. DataFrame . from_dict (some_dict) ValueError : All arrays must be of the same length
Kami menerima pesan kesalahan yang memberi tahu kami bahwa semua array dalam kamus harus memiliki panjang yang sama.
Untuk mengatasi kesalahan ini, kita dapat menggunakan sintaks berikut untuk mengonversi Kamus ke DataFrame:
import pandas as pd #create pandas DataFrame from dictionary df = pd. DataFrame (dict([(key, pd. Series (value)) for key, value in some_dict. items ()])) #view DataFrame print (df) ABC 0 2 9.0 4.0 1 5 3.0 4.0 2 5 NaN 2.0 3 7 NaN NaN 4 8 NaN NaN
Perhatikan bahwa kita berhasil membuat DataFrame pandas dan nilai NaN diisi untuk memastikan bahwa setiap kolom memiliki panjang yang sama.
Jika Anda ingin mengganti nilai NaN tersebut dengan nilai lain (seperti nol), Anda dapat menggunakan fungsi replace() sebagai berikut:
#replace all NaNs with zeros
df. replace (np. nan , 0, inplace= True )
#view updated DataFrame
print (df)
ABC
0 2 9.0 4.0
1 5 3.0 4.0
2 5 0.0 2.0
3 7 0.0 0.0
4 8 0.0 0.0
Perhatikan bahwa setiap nilai NaN telah diganti dengan nol.
Jangan ragu untuk menggunakan fungsi replace() untuk mengganti nilai NaN dengan nilai apa pun yang Anda inginkan.
Sumber daya tambahan
Tutorial berikut menjelaskan cara melakukan operasi umum lainnya di panda:
Pandas: Cara mengonversi DataFrame ke kamus
Pandas: Cara mengganti nama kolom dengan kamus
Pandas: cara mengisi nilai NaN menggunakan kamus