"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنني استبدال القيم الفارغة (مسافة بيضاء) بـ NaN في Pandas DataFrame؟

كيف يمكنني استبدال القيم الفارغة (مسافة بيضاء) بـ NaN في Pandas DataFrame؟

تم النشر بتاريخ 2024-11-08
تصفح:449

How do I replace blank values (whitespace) with NaN in a Pandas DataFrame?

استبدال القيم الفارغة (المسافات البيضاء) بـ NaN في Pandas

يعد تنظيف البيانات خطوة حاسمة في تحليل البيانات. إحدى المهام الشائعة هي استبدال القيم الفارغة (المسافات البيضاء) بـ NaN. يمكن القيام بذلك بكفاءة باستخدام Pandas.

لتحقيق ذلك، استخدم الدالة df.replace() . تسمح هذه الوظيفة بإجراء بحث واستبدال يعتمد على التعبير العادي على قيم DataFrame. إليك كيفية تنفيذ ذلك:

import numpy as np
import pandas as pd

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 fields that contain only whitespace (or are empty) with NaN
print(df.replace(r'^\s*$', np.nan, regex=True))

# Output:
#                    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

لاحظ أن هذا الرمز يستبدل الحقول التي تحتوي على مسافة بيضاء فقط أو الحقول الفارغة (أي، تطابق التعبير العادي r'^\s*$'**) . إذا كانت بياناتك الصالحة تحتوي على مسافات بيضاء، فاضبط التعبير العادي وفقًا لذلك (على سبيل المثال، قم بإزالة **$ من النهاية لـ r'^\s ').

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3