در pandas، میتوان دو یا چند DataFrame را با استفاده از توابع ادغام مختلف با هم ادغام کرد. به طور کلی، سه نوع ادغام در pandas وجود دارد:
1- ادغام سطر به سطر (Row-wise merging): در این نوع ادغام، دو DataFrame بر اساس شناسه سطرهایشان، یعنی ایندکس ها، با یکدیگر ادغام میشوند. برای این کار میتوان از تابع concat()
استفاده کرد. به طور مثال:
import pandas as pd
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3'],
'C': ['C0', 'C1', 'C2', 'C3'],
'D': ['D0', 'D1', 'D2', 'D3']},
index=[0, 1, 2, 3])
df2 = pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'],
'B': ['B4', 'B5', 'B6', 'B7'],
'C': ['C4', 'C5', 'C6', 'C7'],
'D': ['D4', 'D5', 'D6', 'D7']},
index=[4, 5, 6, 7])
result = pd.concat([df1, df2])
print(result)
2- ادغام ستون به ستون (Column-wise merging): در این نوع ادغام، دو DataFrame بر اساس نام ستونهایشان با یکدیگر ادغام میشوند. برای این کار میتوان از تابع merge()
استفاده کرد. به طور مثال:
import pandas as pd
left = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3']})
right = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
'C': ['C0', 'C1', 'C2', 'C3'],
'D': ['D0', 'D1', 'D2', 'D3']})
result = pd.merge(left, right, on='key')
print(result)
3- ادغام ترکیبی (Combining):
برای ادغام ترکیبی، میتوان از تابع combine()
استفاده کرد. به طور مثال:
import pandas as pd
import numpy as np
df1 = pd.DataFrame({'A': [1., np.nan, 3., 4.],
'B': [np.nan, 2., 3., 5.],
'C': [1., 2., np.nan, 4.]})
df2 = pd.DataFrame({'A': [5., 6., np.nan, 8.],
'B': [np.nan, 8., 9., 10.],
'C': [1., np.nan, 3., 4.]})
result = df1.combine(df2, lambda x, y: np.where(pd.isna(x), y, x))
print(result)
در این مثال، با استفاده از تابع combine()
، دو DataFrame با هم ترکیب شدهاند. اگر در یک سلول مقدار NaN بود، مقدار آن با مقدار متناظر در DataFrame دوم جایگزین شده است. در غیر اینصورت، مقدار اولی حفظ شده است.
به طور کلی، ادغام دو یا چند DataFrame در pandas به دلیل داشتن توابع گوناگون و پرکاربرد، بسیار آسان است. این امکان را به برنامه نویسان میدهد تا به سرعت با اطلاعات مختلفی که در قالب DataFrameها در اختیار دارند، کار کنند.
بسیار کاربردی بود. سپاس گزارم.