Mohamed Elnemr نشر 21 أغسطس 2021 أرسل تقرير نشر 21 أغسطس 2021 في لغة SQL ، يوجد طريقة لإختيار عناصر محددة باستخدام IN أو NOT IN وأريد تطبيق نفس الطريقة على dataframe في pandas. لدي الكود التالي: df = pd.DataFrame({'country': ['US', 'UK', 'Germany', 'China']}) countries_to_keep = ['UK', 'China'] #طريقتي df[df['country'] not in countries_to_keep] أريد إيجاد طريقة لأختبار تواجد عناصر داخل countries_to_keep حيث تكون الاجابة ب true او false, كيف يمكن فعل ذلك؟ 2 اقتباس
0 Ahmed Sharshar نشر 21 أغسطس 2021 أرسل تقرير نشر 21 أغسطس 2021 في pandas ، توجد دالة مشابهة ل IN التي توجد في SQL تسمي pd.Series.isin. من أجل اختيار أو اختبار وجود عناصر داخل dataframe عن طريق السطر الأتى: something.isin(somewhere) المثال التالي يوضح استخدام تلك الدالة في حل مشلكتك: import pandas as pd >>> df country 0 US 1 UK 2 Germany 3 China >>> countries_to_keep ['UK', 'China'] >>> df.country.isin(countries_to_keep) 0 False 1 True 2 False 3 True Name: country, dtype: bool لاحظ أننا قمنا بإختبار تواجد العناصر التي في countries_to_keep بداخل country، والعناصر الموجودة بداخلها تظهر امامها True وغير الموجودة ب False. اقتباس
0 Ali Haidar Ahmad نشر 25 أغسطس 2021 أرسل تقرير نشر 25 أغسطس 2021 البيانات لدينا من الشكل: import pandas as pd df = pd.DataFrame({'country': ['US', 'UK', 'Germany', 'China']}) print("Given Dataframe is :\n",df) """ Given Dataframe is : country 0 US blabla 1 US adfv fda 2 Germany adce 3 China """ ونريد فلترة هذه البيانات على أساس الفلتر التالي: countries_to_keep = ['UK', 'China'] أي نريد أن نترك البلدان UK و China، وهذا سيتم كالتالي من خلال الاستعانة بالدالة isin (تكافئ حالة in في SQL) بحيث ستضع True في الأماكن التي تتواجد فيها هذه القيم و False في باقي المناطق: filter=df.country.isin(countries_to_keep) filter """ 0 False 1 True 2 False 3 True Name: country, dtype: bool """ وبالاستعان بمبادئ بايثون نطبق الفلتر: df[filter] """ country 1 UK 3 China """ أما إذا أردت تطبيق المفهوم العكسي أي not in فهذا يقابله فقط استخدام المعامل ~ قبل isin كالتالي: countries_to_keep = ['UK', 'China'] filter=~df.country.isin(countries_to_keep) filter """ 0 True 1 False 2 True 3 False """ df[filter] """ country 0 US 2 Germany """ أو يمكنك استخدام الشكل الدالة query الرائعة مباشرةً: df.query("country in @countries_to_keep") """ country 1 UK 3 China """ df.query("country not in @countries_to_keep") """ country 0 US 2 Germany """ اقتباس
السؤال
Mohamed Elnemr
في لغة SQL ، يوجد طريقة لإختيار عناصر محددة باستخدام IN أو NOT IN وأريد تطبيق نفس الطريقة على dataframe في pandas.
لدي الكود التالي:
أريد إيجاد طريقة لأختبار تواجد عناصر داخل countries_to_keep حيث تكون الاجابة ب true او false, كيف يمكن فعل ذلك؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.