Memisahkan Lajur Kamus ke Lajur Asingkan dengan Panda
Pengenalan Masalah
Apabila bekerja dengan Pandas DataFrames, ia sering ditemui bahawa lajur mengandungi kamus sebagainya nilai. Ini boleh menimbulkan cabaran dalam analisis data selanjutnya, kerana kamus perlu dibahagikan kepada lajur yang berasingan untuk kebolehcapaian dan manipulasi yang lebih baik. Isu ini menjadi sangat relevan apabila kamus mempunyai panjang yang berbeza-beza dan mengandungi kunci yang dikongsi.
Pendekatan dan Ralat Asal
Pengguna dalam siaran forum menerangkan DataFrame di mana ' Lajur Tahap Pencemaran mengandungi kamus. Pada mulanya, mereka cuba membahagikan lajur ini menggunakan kod berikut:
objs = [df, pandas.DataFrame(df['Pollutant Levels'].tolist()).iloc[:, :3]] df2 = pandas.concat(objs, axis=1).drop('Pollutant Levels', axis=1)
Walau bagaimanapun, kaedah ini mengakibatkan Ralat Indeks disebabkan penghirisan di luar sempadan.
Isu Unikod
Pengguna selanjutnya mengesyaki bahawa format Unikod kamus dalam Lajur 'Tahap Pencemaran' mungkin menyebabkan isu ini. Ia adalah dalam bentuk:
u{'a': '1', 'b': '2', 'c': '3'}
bukannya:
{u'a': '1', u'b': '2', u'c': '3'}
Penyelesaian
Untuk menangani isu ini, pendekatan berikut ialah disyorkan:
import pandas as pd df['Pollutant Levels'] = df['Pollutant Levels'].apply(lambda x: dict(x)) df2 = pd.json_normalize(df['Pollutant Levels'])
Penjelasan
Barisan pertama kod menukar kamus Unikod kepada kamus standard. Baris kedua menggunakan fungsi json_normalize daripada Pandas, yang menyediakan cara mudah untuk menukar lajur kamus kepada lajur berasingan. Fungsi ini mengelakkan keperluan untuk menggunakan fungsi yang mahal dan menghasilkan DataFrame yang dikehendaki:
Station ID a b c 8809 46 3 12 8810 36 5 8 8811 NaN 2 7 8812 NaN NaN 11 8813 82 NaN 15
Atas ialah kandungan terperinci Bagaimana untuk Membahagikan Lajur Pandas DataFrame bagi Kamus ke Lajur Berasingan dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!