Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Menggantikan Nilai Whitespace dengan NaN dalam Pandas DataFrames dengan cekap?
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:
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!