Menggantikan Nilai Kosong (Ruang Putih) dengan NaN dalam Panda
Bagaimana anda boleh menggantikan nilai kosong (ruang putih) dengan NaN dalam Panda dengan cekap kerangka data?
Pendekatan Awal:
Kod berikut mampu menggantikan nilai kosong dengan Tiada, tetapi ia tidak cekap dan bukan penyelesaian paling Pythonic:
<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 Optimum:
Panda menawarkan penyelesaian yang lebih ringkas dan cekap melalui kaedah df.replace():
<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')) # replace field that's entirely space (or empty) with NaN print(df.replace(r'^\s*$', np.nan, regex=True))</code>
Kod ini menggantikan tempat kosong nilai (ungkapan biasa: ^s*$) dengan NaN, menghasilkan output yang diingini:
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
Nota:
Jika anda perlu mengendalikan data yang sah yang mungkin mengandungi ruang putih, anda boleh mengubah suai ungkapan biasa kepada r'^s $', yang hanya sepadan dengan medan yang terdiri sepenuhnya daripada ruang putih.
Atas ialah kandungan terperinci Bagaimana untuk Menggantikan Rentetan Kosong (Ruang Putih) dengan NaN dalam Pandas DataFrame?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!