كيفية دمج 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 المتعددة

Add a Comment

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