logo

Pandas DataFrame.merge()

פנדות לְמַזֵג() מוגדר כתהליך של חיבור שני מערכי הנתונים לאחד ויישור השורות על סמך התכונות או העמודות המשותפות. זוהי נקודת כניסה לכל פעולות ההצטרפות הסטנדרטיות של מסד נתונים בין אובייקטי DataFrame:

תחביר:

 pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=True) 

פרמטרים:

    ימין: DataFrame או סדרה בשם
    זהו אובייקט שמתמזג עם ה-DataFrame.אֵיך: {'left', 'right', 'outer', 'inner'}, ברירת המחדל 'inner'
    סוג המיזוג שיש לבצע.
      שמאלה:הוא משתמש רק במפתחות מהמסגרת השמאלית, בדומה לחיבור חיצוני שמאלי של SQL; לשמור על סדר המפתחות.ימין:הוא משתמש רק במפתחות מהמסגרת הימנית, בדומה לחיבור חיצוני ימני של SQL; לשמור על סדר המפתחות.חִיצוֹנִי:הוא השתמש באיחוד המפתחות משתי המסגרות, בדומה לחיבור חיצוני מלא של SQL; מיון מפתחות מבחינה לקסיקוגרפית.פְּנִימִי:הוא משתמש בהצטלבות של מפתחות משתי המסגרות, בדומה לחיבור פנימי של SQL; לשמור על סדר המקשים השמאלי.
    עַל: תווית או רשימה
    זה עמודה או שמות ברמת אינדקס להצטרף אליהם. זה חייב להימצא גם ב-DataFrames השמאלי וגם הימני. אם פועל הוא None ואינו מתמזג באינדקסים, אז זה כברירת מחדל לצומת העמודות בשני DataFrames.
    עזב ב: תווית או רשימה, או דמוי מערך
    זהו עמודה או שמות ברמת אינדקס מה-DataFrame השמאלי לשימוש כמפתח. זה יכול להיות מערך עם אורך שווה לאורך של DataFrame.right_on: תווית או רשימה, או דמוי מערך
    זה עמודה או שמות ברמת אינדקס מה-DataFrame הימני לשימוש כמפתחות. זה יכול להיות מערך עם אורך שווה לאורך של DataFrame.left_index : bool, ברירת מחדל False
    הוא משתמש באינדקס מה-DataFrame השמאלי כמפתח/ים של הצטרפות, אם נכון. במקרה של MultiIndex (היררכי), מפתחות רבים ב-DataFrame האחר (או האינדקס או כמה עמודות) צריכים להתאים למספר הרמות.right_index : bool, ברירת מחדל False
    הוא משתמש באינדקס מה-DataFrame הימני כמפתח הצטרפות. יש לו אותו שימוש כמו left_index.סוג: bool, ברירת מחדל False
    אם נכון, הוא ממיין את מפתחות החיבור לפי סדר לקסיקוגרפי בתוצאה DataFrame. אחרת, סדר מפתחות ההצטרפות תלוי בסוג ההצטרפות (איך מילת מפתח).סיומות: tuple של (str, str), ברירת מחדל ('_x', '_y')
    זה סיומת להחיל כדי לחפוף את שמות העמודות ב-DataFrame השמאלי והימין, בהתאמה. העמודות משתמשות בערכי (False, False) כדי להעלות חריגה על חפיפה.עותק: bool, ברירת מחדל True
    אם נכון, הוא מחזיר עותק של ה-DataFrame.
    אחרת, זה יכול להימנע מהעותק.אינדיקטור: bool או str, ברירת מחדל False
    אם נכון, זה מוסיף עמודה לפלט DataFrame ' _לְמַזֵג עם מידע על המקור של כל שורה. אם מדובר במחרוזת, עמודה עם מידע על המקור של כל שורה תתווסף לפלט DataFrame, והעמודה תיקרא ערך של מחרוזת. עמודת המידע מוגדרת כסוג קטגורי והיא מקבלת ערך של:
      'שמאל_בלבד'עבור התצפיות שמפתח המיזוג שלהן מופיע רק ב'שמאל' של ה-DataFrame, ואילו,'נכון_בלבד'מוגדר עבור תצפיות שבהן מפתח המיזוג מופיע רק ב'ימין' של ה-DataFrame,'שניהם'אם מפתח המיזוג של התצפית נמצא בשניהם.
    לְאַמֵת: str, אופציונלי
    אם הוא צוין, הוא בודק את סוג המיזוג המופיע להלן:
    • 'one_to_one' או '1:1': הוא בודק אם מפתחות המיזוג הם ייחודיים במערך הנתונים השמאלי והימין.
    • 'one_to_many' או '1:m': הוא בודק אם מפתחות המיזוג הם ייחודיים רק במערך הנתונים השמאלי.
    • 'many_to_one' או 'm:1': הוא בודק אם מפתחות המיזוג הם ייחודיים רק במערך הנתונים הנכון.
    • 'רבים_לרבים' או 'מ:מ': זה מותר, אך אינו גורם לבדיקות.

דוגמה1: מיזוג שני DataFrames על מפתח

 # import the pandas library import pandas as pd left = pd.DataFrame({ 'id':[1,2,3,4], 'Name': ['John', 'Parker', 'Smith', 'Parker'], 'subject_id':['sub1','sub2','sub4','sub6']}) right = pd.DataFrame({ 'id':[1,2,3,4], 'Name': ['William', 'Albert', 'Tony', 'Allen'], 'subject_id':['sub2','sub4','sub3','sub6']}) print (left) print (right) 

תְפוּקָה

 id Name subject_id 0 1 John sub1 1 2 Parker sub2 2 3 Smith sub4 3 4 Parker sub6 id Name subject_id 0 1 William sub2 1 2 Albert sub4 2 3 Tony sub3 3 4 Allen sub6 

דוגמה 2: מיזוג שני DataFrames על מספר מפתחות:

 import pandas as pd left = pd.DataFrame({ 'id':[1,2,3,4,5], 'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 'subject_id':['sub1','sub2','sub4','sub6','sub5']}) right = pd.DataFrame({ 'id':[1,2,3,4,5], 'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'], 'subject_id':['sub2','sub4','sub3','sub6','sub5']}) print pd.merge(left,right,on='id') 

תְפוּקָה

 id Name_x subject_id_x Name_y subject_id_y 0 1 John sub1 William sub2 1 2 Parker sub2 Albert sub4 2 3 Smith sub4 Tony sub3 3 4 Parker sub6 Allen sub6