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

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *