English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
مثال على عمليات الاتصال في Pandas
Pandas تحتوي على عمليات اتصال ذاكرة عالية بسرعة عالية تشبه جداً وظائف databases العادية مثل SQL
Pandas يقدم وظيفة واحدة merge كمدخل إلى جميع عمليات الاتصال الأساسية لـ DataFrame بين دatabases العادية
pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=True)
في هذا السياق، استخدمنا التالي كمعلمات:
أيسر − DataFrame واحدة. أيمن − DataFrame آخر. على − يتم إضافة العمود (الاسم) إلى الأعلى. يجب أن يتم العثور عليه في كلا DataFrame اليسار واليمنى. left_on − يتم استخدام عمود (الاسم) من DataFrame اليسار كمفتاح. right_on − يتم استخدام عمود (الاسم) من DataFrame اليمنى كمفتاح. left_index − إذا كان True، فإن يتم استخدام مفتاح التسلسل (علامات التبويب) للDataFrame اليسار كمفتاح الاتصال. إذا كان DataFrame يحتوي على MultiIndex (متجزأ)، فإن عدد المستويات يجب أن يتطابق مع عدد المفاتيح في DataFrame اليمنى. right_index − استخدام نفس المفتاح كـleft_index للDataFrame الصحيح. كيف − أحد 'اليسار'،'اليمين'،'الخارجي'،'الداخلي'. افتراضياً هو الداخلي. تم وصف كل طريقة أدناه. ترتيب − إضافة المفتاح التسلسلي إلى دفعة النتائج الموسى. افتراضياً هو True، وفي العديد من الحالات، سيؤدي إعداده على False إلى تحسين الأداء بشكل كبير.
الآن دعونا ننشئ DataFrameين مختلفين ونقوم بدمجهم.
# import the pandas library import pandas as pd left = pd.DataFrame({ 'id':[1,2,3,4,5], 'Name': ['الاسم', 'آمي', 'علي', 'عليس', 'أيونغ'], 'subject_id':['sub1','sub2','sub4','sub6','sub5']}) right = pd.DataFrame( {'id':[1,2,3,4,5], 'subject_id':['sub2','sub4','sub3','sub6','sub5']})) print(left print(right)
نتائج التنفيذ كالتالي:
Name id subject_id 0 Alex 1 sub1 1 Amy 2 sub2 2 Allen 3 sub4 3 Alice 4 sub6 4 Ayoung 5 sub5 Name id subject_id 0 Billy 1 sub2 1 Brian 2 sub4 2 Bran 3 sub3 3 Bryce 4 sub6 4 Betty 5 sub5
import pandas as pd left = pd.DataFrame({ 'id':[1,2,3,4,5], 'Name': ['الاسم', 'آمي', 'علي', 'عليس', 'أيونغ'], 'subject_id':['sub1','sub2','sub4','sub6','sub5']}) right = pd.DataFrame({ 'id':[1,2,3,4,5], 'subject_id':['sub2','sub4','sub3','sub6','sub5']}) print(pd.merge(left, right, on='id'))
نتائج التنفيذ كالتالي:
Name_x id subject_id_x Name_y subject_id_y 0 Alex 1 sub1 Billy sub2 1 Amy 2 sub2 Brian sub4 2 Allen 3 sub4 Bran sub3 3 Alice 4 sub6 Bryce sub6 4 Ayoung 5 sub5 Betty sub5
import pandas as pd left = pd.DataFrame({ 'id':[1,2,3,4,5], 'Name': ['الاسم', 'آمي', 'علي', 'عليس', 'أيونغ'], 'subject_id':['sub1','sub2','sub4','sub6','sub5']}) right = pd.DataFrame({ 'id':[1,2,3,4,5], 'subject_id':['sub2','sub4','sub3','sub6','sub5']}) print(pd.merge(left, right, on=['id', 'subject_id']))
نتائج التنفيذ كالتالي:
Name_x id subject_id Name_y 0 Alice 4 sub6 Bryce 1 Ayoung 5 sub5 Betty
يحدد معامل how كيفية تحديد الأصابع التي يجب تضمينها في جدول النتيجة. إذا لم يظهر مفتاح التجميع في جدول اليسرى أو اليمين، فإن القيم في جدول الاتحاد ستكون NA.
إليك تلخيصًا لكيفية اختيارهم واسمهم المماثل في SQL:
طريقة التجميع | النقيض SQL | الوصف |
أيسر | JOIN الخارجي الأيسر | استخدام مفتاح الجسم الأيسر |
أيمن | JOIN الخارجي الأيمن | استخدام مفتاح الجسم الصحيح |
خارجي | JOIN الخارجي الكامل | استخدام مفتاح التجميع |
داخلي | JOIN داخلي | استخدام الت交汇 لل مفتاح |
import pandas as pd left = pd.DataFrame({ 'id':[1,2,3,4,5], 'Name': ['الاسم', 'آمي', 'علي', 'عليس', 'أيونغ'], 'subject_id':['sub1','sub2','sub4','sub6','sub5']}) right = pd.DataFrame({ 'id':[1,2,3,4,5], 'subject_id':['sub2','sub4','sub3','sub6','sub5']}) print(pd.merge(left, right, on='subject_id', how='left'))
نتائج التنفيذ كالتالي:
Name_x id_x subject_id Name_y id_y 0 Alex 1 sub1 NaN NaN 1 Amy 2 sub2 Billy 1.0 2 Allen 3 sub4 Brian 2.0 3 Alice 4 sub6 Bryce 4.0 4 Ayoung 5 sub5 Betty 5.0
import pandas as pd left = pd.DataFrame({ 'id':[1,2,3,4,5], 'Name': ['الاسم', 'آمي', 'علي', 'عليس', 'أيونغ'], 'subject_id':['sub1','sub2','sub4','sub6','sub5']}) right = pd.DataFrame({ 'id':[1,2,3,4,5], 'subject_id':['sub2','sub4','sub3','sub6','sub5']}) print(pd.merge(left, right, on='subject_id', how='right'))
نتائج التنفيذ كالتالي:
Name_x id_x subject_id Name_y id_y 0 Amy 2.0 sub2 Billy 1 1 Allen 3.0 sub4 Brian 2 2 Alice 4.0 sub6 Bryce 4 3 Ayoung 5.0 sub5 Betty 5 4 NaN NaN sub3 Bran 3
import pandas as pd left = pd.DataFrame({ 'id':[1,2,3,4,5], 'Name': ['الاسم', 'آمي', 'علي', 'عليس', 'أيونغ'], 'subject_id':['sub1','sub2','sub4','sub6','sub5']}) right = pd.DataFrame({ 'id':[1,2,3,4,5], 'subject_id':['sub2','sub4','sub3','sub6','sub5']}) print(pd.merge(left, right, how='outer', on='subject_id'))
نتائج التنفيذ كالتالي:
Name_x id_x subject_id Name_y id_y 0 Alex 1.0 sub1 NaN NaN 1 Amy 2.0 sub2 Billy 1.0 2 Allen 3.0 sub4 Brian 2.0 3 Alice 4.0 sub6 Bryce 4.0 4 Ayoung 5.0 sub5 Betty 5.0 5 NaN NaN sub3 Bran 3.0
الإتصال سيتم تنفيذه على المؤشر. عملية الاتصال تقبل العنصر الذي يدعوها. لذلك، a.join(b) لا يساوي b.join(a).
import pandas as pd left = pd.DataFrame({ 'id':[1,2,3,4,5], 'Name': ['الاسم', 'آمي', 'علي', 'عليس', 'أيونغ'], 'subject_id':['sub1','sub2','sub4','sub6','sub5']}) right = pd.DataFrame({ 'id':[1,2,3,4,5], 'subject_id':['sub2','sub4','sub3','sub6','sub5']}) print(pd.merge(left, right, on='subject_id', how='inner'))
نتائج التنفيذ كالتالي:
Name_x id_x subject_id Name_y id_y 0 Amy 2 sub2 Billy 1 1 Allen 3 sub4 Brian 2 2 Alice 4 sub6 Bryce 4 3 Ayoung 5 sub5 Betty 5