Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menggantikan Nilai Whitespace dengan NaN dalam Pandas DataFrames dengan cekap?

Bagaimana untuk Menggantikan Nilai Whitespace dengan NaN dalam Pandas DataFrames dengan cekap?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-27 05:03:30225semak imbas

How to Efficiently Replace Whitespace Values with NaN in Pandas DataFrames?

Menggantikan Nilai Kosong (Ruang Putih) dengan NaN dalam Panda

Masalah:

Pertimbangkan bingkai data Pandas dengan nilai ruang putih terdapat dalam lajur tertentu. Matlamatnya adalah untuk menggantikan ruang putih ini dengan nilai NaN.

Penyelesaian Hodoh:

<code class="python">for i in df.columns:
    df[i][df[i].apply(lambda i: True if re.search('^\s*$', str(i)) else False)]=None</code>

Penyelesaian ini berulang melalui setiap lajur, menghasilkan topeng boolean menggunakan regex, dan menggantikan nilai ruang putih dengan Tiada. Walau bagaimanapun, ia tidak cekap dan bukan idiomatik.

Penyelesaian yang Diperbaiki:

<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'))

# replaces field that's entirely space (or empty) with NaN
print(df.replace(r'^\s*$', np.nan, regex=True))</code>

Penyelesaian ini mengambil kesempatan daripada fungsi replace() terbina dalam Pandas, yang boleh digunakan untuk menggantikan nilai yang ditentukan berdasarkan corak regex. Dengan menggunakan r'^s*$', regex sepadan dan menggantikan mana-mana medan yang terdiri sepenuhnya daripada ruang putih (atau kosong) dengan NaN.

Pengoptimuman:

  • Semak sama ada jenis data lajur ialah objek, kerana nilai ruang putih biasanya ditemui dalam lajur objek.
  • Gunakan r'^s $' dan bukannya r'^s*$' jika data yang sah mengandungi aksara ruang putih .

Atas ialah kandungan terperinci Bagaimana untuk Menggantikan Nilai Whitespace dengan NaN dalam Pandas DataFrames 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