كيفية دمج pandas dataframes عبر أعمدة متعددة
في كثير من الأحيان قد ترغب في دمج اثنين من DataFrames الباندا عبر أعمدة متعددة. لحسن الحظ، من السهل القيام بذلك باستخدام الدالة pandas merge() ، والتي تستخدم الصيغة التالية:
p.d. merge (df1, df2, left_on=['col1','col2'], right_on = ['col1','col2'])
يشرح هذا البرنامج التعليمي كيفية استخدام هذه الوظيفة عمليًا.
مثال 1: دمج أعمدة متعددة بأسماء مختلفة
لنفترض أن لدينا إطاري بيانات الباندا التاليين:
import pandas as pd #create and view first DataFrame df1 = pd.DataFrame({'a1': [0, 0, 1, 1, 2], 'b': [0, 0, 1, 1, 1], 'c': [11, 8, 10, 6, 6]}) print (df1) a1 bc 0 0 0 11 1 0 0 8 2 1 1 10 3 1 1 6 4 2 1 6 #create and view second DataFrame df2 = pd.DataFrame({'a2': [0, 1, 1, 1, 3], 'b': [0, 0, 0, 1, 1], 'd': [22, 24, 25, 33, 37]}) print (df2) a2 comic 0 0 0 22 1 1 0 24 2 1 0 25 3 1 1 33 4 3 1 37
يوضح التعليمة البرمجية التالية كيفية إجراء صلة يسرى باستخدام أعمدة متعددة من كل من DataFrames:
p.d. merge (df1, df2, how=' left ', left_on=[' a1 ', ' b '], right_on = [' a2 ', ' b ']) a1 b c a2 d 0 0 0 11 0.0 22.0 1 0 0 8 0.0 22.0 2 1 1 10 1.0 33.0 3 1 1 6 1.0 33.0 4 2 1 6 NaN NaN
المثال 2: دمج أعمدة متعددة بنفس الأسماء
لنفترض أن لدينا اثنين من إطارات بيانات الباندا التالية بنفس أسماء الأعمدة:
import pandas as pd #createDataFrames df1 = pd.DataFrame({'a': [0, 0, 1, 1, 2], 'b': [0, 0, 1, 1, 1], 'c': [11, 8, 10, 6, 6]}) df2 = pd.DataFrame({'a': [0, 1, 1, 1, 3], 'b': [0, 0, 0, 1, 1], 'd': [22, 24, 25, 33, 37]})
في هذه الحالة، يمكننا تبسيط استخدام = [‘a’, ‘b’] نظرًا لأن أسماء الأعمدة هي نفسها في كلا إطاري البيانات:
p.d. merge (df1, df2, how=' left ', on=[' a ', ' b ']) a b c d 0 0 0 11 22.0 1 0 0 8 22.0 2 1 1 10 33.0 3 1 1 6 33.0 4 2 1 6 NaN
مصادر إضافية
كيفية دمج اثنين من إطارات بيانات Pandas في ملف Index
كيفية تكديس إطارات بيانات Pandas المتعددة