Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Cekap Menetapkan Nilai Sel Khusus dalam Pandas DataFrame?

Bagaimana untuk Cekap Menetapkan Nilai Sel Khusus dalam Pandas DataFrame?

Linda Hamilton
Linda Hamiltonasal
2024-12-01 17:28:11458semak imbas

How to Efficiently Set a Specific Cell Value in a Pandas DataFrame?

Tetapkan Nilai untuk Sel Tertentu dalam Pandas DataFrame

Anda telah mencipta DataFrame dan ingin menukar nilai sel tertentu . Walau bagaimanapun, menggunakan df.xs('C')['x'] = 10 tidak mengemas kini DataFrame seperti yang dijangkakan. Mengapa?

Masalahnya berpunca daripada cara df.xs() beroperasi. Secara lalai, ia mengembalikan DataFrame baharu dengan salinan data. Jadi, df.xs('C')['x'] = 10 hanya mengubah suai DataFrame baharu, bukan yang asal.

Sebaliknya, anda boleh menggunakan df['x']['C'] = 10. Kaedah ini mengembalikan paparan DataFrame asal dan sebarang pengubahsuaian akan digunakan pada df.

Walau bagaimanapun, pendekatan yang disyorkan menggunakan .at atau .iat:

  • df.at['C', 'x'] = 10: Tetapkan nilai pada baris 'C' dan lajur 'x' secara langsung.
  • df.iat[2, 0] = 10: Mengakses sel menggunakan kedudukan indeksnya (2 untuk baris, 0 untuk lajur).

Mengapa df.xs('C')['x'] = 10 ditamatkan?

df.set_value('C' , 'x', 10) ialah kaedah pilihan kerana ia lebih pantas. Walau bagaimanapun, df.set_value() dijadualkan untuk penamatan.

Perbandingan Prestasi

Tanda aras menunjukkan bahawa df.set_value() mengatasi pilihan lain dari segi kelajuan:

In [18]: %timeit df.set_value('C', 'x', 10)
100000 loops, best of 3: 2.9 µs per loop

In [20]: %timeit df['x']['C'] = 10
100000 loops, best of 3: 6.31 µs per loop

In [81]: %timeit df.at['C', 'x'] = 10
100000 loops, best of 3: 9.2 µs per loop

Atas ialah kandungan terperinci Bagaimana untuk Cekap Menetapkan Nilai Sel Khusus dalam Pandas DataFrame?. 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