Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah anda menggantikan nilai ruang putih dengan NaN dalam bingkai data Pandas?

Bagaimanakah anda menggantikan nilai ruang putih dengan NaN dalam bingkai data Pandas?

Susan Sarandon
Susan Sarandonasal
2024-10-30 10:13:27170semak imbas

How do you replace whitespace values with NaN in a Pandas dataframe?

Menggantikan Nilai Kosong dengan NaN dalam Panda

Masalah

Mencari nilai ruang putih dalam bingkai data Pandas dan menggantikannya dengan NaN boleh menjadi satu cabaran. Matlamatnya adalah untuk menukar bingkai data dengan nilai rentetan kosong kepada satu dengan nilai NaN, yang berpotensi meningkatkan pengendalian dan analisis data.

Penyelesaian

Kaedah df.replace() menyediakan penyelesaian yang elegan, membolehkan anda untuk menggantikan nilai berdasarkan ungkapan biasa:

<code class="python">df.replace(r'^\s*$', np.nan, regex=True)</code>

Dalam corak regex ini, ^ sepadan dengan permulaan rentetan, s* sepadan dengan sifar atau lebih aksara ruang putih dan $ sepadan dengan penghujung rentetan. Oleh itu, regex ini menyemak rentetan yang terdiri sepenuhnya daripada ruang kosong atau rentetan kosong.

Pelaksanaan

Menggunakan penyelesaian ini pada kerangka data contoh:

<code class="python">df = pd.DataFrame([
    [-0.532681, 'foo', 0],
    [1.490752, 'bar', 1],
    [-1.387326, 'foo', 2],
    [0.814772, 'baz', ' '],     
    [-0.222552, '   ', 4],
    [-1.176781,  'qux', '  '],         
], columns='A B C'.split(), index=pd.date_range('2000-01-01','2000-01-06'))

result = df.replace(r'^\s*$', np.nan, regex=True)

print(result)</code>

Ini akan menghasilkan output yang dikehendaki:

                   A    B   C
2000-01-01 -0.532681  foo   0
2000-01-02  1.490752  bar   1
2000-01-03 -1.387326  foo   2
2000-01-04  0.814772  baz NaN
2000-01-05 -0.222552  NaN   4
2000-01-06 -1.176781  qux NaN

Peningkatan

Seperti yang ditunjukkan oleh Temak, jika data yang sah mungkin mengandungi ruang kosong, corak regex boleh diubah suai kepada r'^s $' untuk memadankan hanya rentetan yang terdiri sepenuhnya daripada ruang putih:

<code class="python">df.replace(r'^\s+$', np.nan, regex=True)</code>

Atas ialah kandungan terperinci Bagaimanakah anda menggantikan nilai ruang putih dengan NaN dalam bingkai data Pandas?. 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