Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengira Lajur dalam DataFrame Menggunakan Nilai Baris Sebelumnya dengan `apply()`?

Bagaimana untuk Mengira Lajur dalam DataFrame Menggunakan Nilai Baris Sebelumnya dengan `apply()`?

Linda Hamilton
Linda Hamiltonasal
2024-11-03 19:26:02408semak imbas

How to Calculate a Column in a DataFrame Using Previous Row Values with `apply()`?

Lelaran Melalui DataFrames dengan Pertimbangan Nilai Terdahulu Menggunakan apply()

Dalam panda, fungsi apply() biasanya digunakan untuk menggunakan fungsi pada setiap baris DataFrame . Walau bagaimanapun, cabaran timbul apabila nilai baris sebelumnya juga dikira menggunakan kaedah apply() yang sama.

Pertimbangkan DataFrame berikut:

Index_Date A B C D
2015-01-31 10 10 NaN 10
2015-02-01 2 3 NaN 22
2015-02-02 10 60 NaN 280
2015-02-03 10 100 NaN 250

Objektifnya adalah untuk mendapatkan Lajur C:

  • Untuk 31-01-2015, tetapkannya kepada nilai D.
  • Untuk baris berikutnya, darabkan nilai baris sebelumnya C dengan nilai baris semasa A dan tambahkannya pada nilai baris semasa B.

Penyelesaian:

Untuk mencapai ini, kami mula-mula menetapkan nilai awal C untuk 31-01-2015:

<code class="python">df.loc[0, 'C'] = df.loc[0, 'D']</code>

Kemudian, kami mengulangi baris yang tinggal dan mengemas kini nilai C dengan pengiraan yang diingini:

<code class="python">for i in range(1, len(df)):
    df.loc[i, 'C'] = df.loc[i-1, 'C'] * df.loc[i, 'A'] + df.loc[i, 'B']</code>

DataFrame akhir selepas operasi ini:

Index_Date A B C D
2015-01-31 10 10 10 10
2015-02-01 2 3 23 22
2015-02-02 10 60 290 280

Atas ialah kandungan terperinci Bagaimana untuk Mengira Lajur dalam DataFrame Menggunakan Nilai Baris Sebelumnya dengan `apply()`?. 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