Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Membahagikan Lajur Pandas DataFrame bagi Kamus ke Lajur Berasingan dengan Cekap?

Bagaimana untuk Membahagikan Lajur Pandas DataFrame bagi Kamus ke Lajur Berasingan dengan Cekap?

DDD
Lepaskan: 2024-12-16 04:21:13
asal
438 orang telah melayarinya

How to Efficiently Split a Pandas DataFrame Column of Dictionaries into Separate Columns?

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)
Salin selepas log masuk

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'}
Salin selepas log masuk

bukannya:

{u'a': '1', u'b': '2', u'c': '3'}
Salin selepas log masuk

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'])
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan