كيفية تصفية pandas dataframe باستخدام الأعمدة المنطقية
يمكنك استخدام الطرق التالية لتصفية الصفوف في pandas DataFrame بناءً على قيم الأعمدة المنطقية:
الأسلوب 1: تصفية DataFrame استناداً إلى عمود منطقي
#filter for rows where value in 'my_column' is True df. loc [df. my_column ]
الطريقة الثانية: تصفية DataFrame استنادًا إلى أعمدة منطقية متعددة
#filter for rows where value in 'column1' or 'column2' is True df. loc [df. column1 | df. column2 ]
توضح الأمثلة التالية كيفية استخدام كل طريقة عمليًا مع الباندا DataFrame التالية:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E', 'F', 'G'], ' points ': [18,20, 25, 40, 34, 32, 19], ' all_star ': [True, False, True, True, True, False, False], ' starter ': [False, True, True, True, False, False, False]}) #view DataFrame print (df) team points all_star starter 0 A 18 True False 1 B 20 False True 2 C 25 True True 3 D 40 True True 4 E 34 True False 5 F 32 False False 6 G 19 False False
المثال 1: تصفية DataFrame بناءً على عمود منطقي
يمكننا استخدام بناء الجملة التالي لتصفية Pandas DataFrame بحيث يحتوي فقط على الصفوف التي تكون فيها القيمة الموجودة في العمود all_star صحيحة:
#filter for rows where 'all_star' is True df. loc [df. all_star ] team points all_star starter 0 A 18 True False 2 C 25 True True 3 D 40 True True 4 E 34 True False
لاحظ أنه تمت تصفية DataFrame ليحتوي فقط على الصفوف التي تكون قيمتها في العمود all_star صحيحة.
إذا كنت تريد بدلاً من ذلك تصفية الصفوف التي يكون فيها all_star خطأ، فما عليك سوى كتابة علامة التلدة ( ~ ) أمام اسم العمود:
#filter for rows where 'all_star' is False df. loc [ ~ df. all_star ] team points all_star starter 1 B 20 False True 5 F 32 False False 6 G 19 False False
تمت الآن تصفية DataFrame ليحتوي فقط على الصفوف التي تكون قيمتها في عمود all_star خاطئة.
المثال 2: تصفية DataFrame بناءً على أعمدة منطقية متعددة
يمكننا استخدام بناء الجملة التالي لتصفية الباندا DataFrame بحيث يحتوي فقط على الصفوف التي تكون فيها قيمة عمود all_star أو عمود البداية صحيحة:
#filter for rows where 'all_star' or 'starter' is True df. loc [df. all_star | df. starter ] team points all_star starter 0 A 18 True False 1 B 20 False True 2 C 25 True True 3 D 40 True True 4 E 34 True False
لاحظ أنه تمت تصفية DataFrame ليحتوي فقط على الصفوف التي تكون قيمتها في العمود all_star أو العمود Starter صحيحة.
إذا كنت تريد تصفية الصفوف التي تكون قيمتها في العمودين all_star و starter صحيحة، فيمكنك استخدام عامل التشغيل & بدلاً من | المشغل أو العامل:
#filter for rows where 'all_star' and 'starter' is True df. loc [df. all_star & df. starter ] team points all_star starter 2 C 25 True True 3 D 40 True True
تمت الآن تصفية DataFrame بحيث يحتوي فقط على الصفوف التي تكون فيها القيمة الموجودة في العمودين all_star و starter صحيحة.
ذات صلة: الفرق بين loc و iloc في الباندا
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية تنفيذ المهام الشائعة الأخرى في الباندا:
الباندا: حدد صفوفًا من DataFrame باستخدام سلسلة منطقية
الباندا: كيفية إنشاء عمود منطقي بناءً على الحالة
الباندا: كيفية تحويل القيم المنطقية إلى قيم صحيحة