Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menambah Lajur yang Dipetakan pada Pandas DataFrame dengan Cekap?

Bagaimana untuk Menambah Lajur yang Dipetakan pada Pandas DataFrame dengan Cekap?

DDD
DDDasal
2024-10-29 02:27:29208semak imbas

How to Efficiently Add a Mapped Column to a Pandas DataFrame?

Menambah Lajur Dipetakan pada Bingkai Data Pandas

Apabila bekerja dengan panda, tambah lajur baharu dengan nilai dipetakan berdasarkan lajur sedia ada boleh menjadi tugas yang mudah. Walau bagaimanapun, pendekatan tertentu mungkin mengakibatkan ralat atau kesukaran.

Satu percubaan biasa adalah untuk menetapkan nilai yang dipetakan secara langsung ke lajur baharu:

<code class="python">df["B"] = equiv(df["A"])</code>

Walau bagaimanapun, ini akan gagal sebagai equiv, mewakili kamus, bukan fungsi boleh panggil.

Pendekatan lain yang mungkin tidak menghasilkan hasil yang diingini ialah menggunakan peta dengan fungsi lambda:

<code class="python">df["B"] = df["A"].map(lambda x: equiv[x])</code>

Ungkapan ini mungkin akan menimbulkan KeyError melainkan jika kekunci kamus betul-betul sepadan dengan nilai lajur.

Penyelesaian yang Betul

Kaedah yang betul untuk menambah lajur yang dipetakan ialah menggunakan peta terus dengan kamus:

<code class="python">df["B"] = df["A"].map(equiv)</code>

Pendekatan ini akan mencipta lajur baharu, B, dengan nilai yang dipetakan daripada kamus equiv. Jika kunci tidak wujud dalam kamus, baris yang sepadan akan diberikan NaN.

Contoh

Pertimbangkan DataFrame berikut:

<code class="python">df = pd.DataFrame({"A": [7001, 8001, 9001]})
equiv = {7001: 1, 8001: 2, 9001: 3}</code>

Memohon pemetaan yang betul akan menghasilkan hasil yang diingini:

<code class="python">df["B"] = df["A"].map(equiv)

print(df)

      A  B
0  7001  1
1  8001  2
2  9001  3</code>

Atas ialah kandungan terperinci Bagaimana untuk Menambah Lajur yang Dipetakan pada Pandas DataFrame dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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