كيفية استخدام cbind في python (أي ما يعادل r)
يمكن استخدام الدالة cbind في لغة R، وهي اختصار لـ column-bind ، لدمج إطارات البيانات معًا بواسطة أعمدتها.
يمكننا استخدام الدالة pandas concat() لأداء الوظيفة المكافئة في Python:
df3 = pd. concat ([df1, df2], axis= 1 )
توضح الأمثلة التالية كيفية استخدام هذه الوظيفة عمليًا.
مثال 1: استخدم cbind في Python بقيم فهرس متساوية
لنفترض أن لدينا إطاري بيانات الباندا التاليين:
import pandas as pd #define DataFrames df1 = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E'], ' points ': [99, 91, 104, 88, 108]}) print (df1) team points 0 to 99 1 B 91 2 C 104 3 D 88 4 E 108 df2 = pd. DataFrame ({' assists ': ['A', 'B', 'C', 'D', 'E'], ' rebounds ': [22, 19, 25, 33, 29]}) print (df2) rebound assists 0 to 22 1 B 19 2 C 25 3 D 33 4 E 29
يمكننا استخدام الدالة concat() لربط إطاري البيانات هذين معًا بسرعة من خلال أعمدتهما:
#column-bind two DataFrames into new DataFrame
df3 = pd. concat ([df1, df2], axis= 1 )
#view resulting DataFrame
df3
team points assists rebounds
0 to 99 to 22
1 B 91 B 19
2 C 104 C 25
3 D 88 D 33
4 E 108 E 29
مثال 2: استخدام cbind في Python مع قيم فهرس غير متساوية
لنفترض أن لدينا إطاري بيانات الباندا التاليين:
import pandas as pd #define DataFrames df1 = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E'], ' points ': [99, 91, 104, 88, 108]}) print (df1) team points 0 to 99 1 B 91 2 C 104 3 D 88 4 E 108 df2 = pd. DataFrame ({' assists ': ['A', 'B', 'C', 'D', 'E'], ' rebounds ': [22, 19, 25, 33, 29]}) df2. index = [6, 7, 8, 9, 10] print (df2) rebound assists 6 to 22 7 B 19 8 C 25 9 D 33 10 E 29
لاحظ أن DataFrames اثنين ليس لهما نفس قيم الفهرس.
إذا حاولنا استخدام الدالة concat() لربطهما معًا، فسنحصل على النتيجة التالية:
#attempt to column-bind two DataFrames
df3 = pd. concat ([df1, df2], axis= 1 )
#view resulting DataFrame
df3
team points assists rebounds
0 to 99.0 NaN NaN
1 B 91.0 NaN NaN
2 C 104.0 NaN NaN
3 D 88.0 NaN NaN
4 E 108.0 NaN NaN
6 NaN NaN A 22.0
7 NaN NaN B 19.0
8 NaN NaN C 25.0
9 NaN NaN D 33.0
10 NaN NaN E 29.0
هذه ليست النتيجة التي أردناها.
لحل هذه المشكلة، نحتاج أولاً إلى إعادة تعيين فهرس كل DataFrame قبل ربطها معًا:
import pandas as pd #define DataFrames df1 = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E'], ' points ': [99, 91, 104, 88, 108]}) df2 = pd. DataFrame ({' assists ': ['A', 'B', 'C', 'D', 'E'], ' rebounds ': [22, 19, 25, 33, 29]}) df2. index = [6, 7, 8, 9, 10] #reset index of each DataFrame df1. reset_index (drop= True , place= True ) df2. reset_index (drop= True , place= True ) #column-bind two DataFrames df3 = pd. concat ([df1, df2], axis= 1 ) #view resulting DataFrame df3 team points assists rebounds 0 to 99 to 22 1 B 91 B 19 2 C 104 C 25 3 D 88 D 33 4 E 108 E 29
لاحظ أن DataFrame هذا يطابق الإطار الذي حصلنا عليه في المثال السابق.
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية تنفيذ العمليات الشائعة الأخرى في بايثون:
كيفية دمج اثنين من إطارات بيانات Pandas في ملف Index
كيفية دمج Pandas DataFrames عبر أعمدة متعددة
كيفية عمل VLOOKUP في الباندا