Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menggantikan Rentetan Kosong (Ruang Putih) dengan NaN dalam Pandas DataFrame?

Bagaimana untuk Menggantikan Rentetan Kosong (Ruang Putih) dengan NaN dalam Pandas DataFrame?

Linda Hamilton
Linda Hamiltonasal
2024-10-31 04:18:30603semak imbas

How to Replace Empty Strings (Whitespace) with NaN in a Pandas DataFrame?

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!

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