كيفية تصفية 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 باستخدام سلسلة منطقية
الباندا: كيفية إنشاء عمود منطقي بناءً على الحالة
الباندا: كيفية تحويل القيم المنطقية إلى قيم صحيحة

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *