Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Membuat Lajur Bersyarat If-Else-Else dalam Panda?

Bagaimana untuk Membuat Lajur Bersyarat If-Else-Else dalam Panda?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-20 06:55:02578semak imbas

How to Create an If-Else-Else Conditional Column in Pandas?

Membuat Lajur Bersyarat If-Else-Else dalam Panda

Apabila bekerja dengan data, selalunya perlu membuat lajur baharu berdasarkan khusus syarat. Pandas menyediakan sintaks yang memudahkan proses ini, membolehkan anda mentakrifkan keadaan if-elif-else dalam satu langkah.

Untuk menggambarkan perkara ini, mari kita pertimbangkan DataFrame berikut:

    A    B
a   2    2
b   3    1
c   1    3

Kami ingin mencipta lajur 'C' baharu yang mengikut syarat ini:

  • Jika A == B, tetapkan C kepada 0
  • Jika A > B, tetapkan C kepada 1
  • Jika A < B, tetapkan C kepada -1

Menggunakan Fungsi Tersuai

Satu pendekatan ialah mentakrifkan fungsi tersuai yang menilai syarat ini untuk setiap baris:

<code class="python">def my_function(row):
    if row['A'] == row['B']:
        return 0
    elif row['A'] > row['B']:
        return 1
    else:
        return -1<p>Kaedah apply() kemudiannya boleh digunakan untuk menggunakan fungsi ini pada setiap baris DataFrame, mewujudkan lajur 'C':</p>
<pre class="brush:php;toolbar:false"><code class="python">df['C'] = df.apply(my_function, axis=1)</code>

Pendekatan Vektor

Untuk penyelesaian vektor yang lebih cekap, kita boleh menggunakan fungsi np.where NumPy bersama-sama dengan pengindeksan logik panda:

<code class="python">df['C'] = np.where(
    df['A'] == df['B'], 0, np.where(
    df['A'] >  df['B'], 1, -1))</code>

Ini menghapuskan keperluan untuk fungsi tersuai, mengakibatkan penyelesaian yang lebih pantas dan lebih optimum.

DataFrame yang terhasil dengan lajur 'C':

    A    B    C
a   2    2    0
b   3    1    1
c   1    3   -1

Atas ialah kandungan terperinci Bagaimana untuk Membuat Lajur Bersyarat If-Else-Else dalam Panda?. 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