Cum să îmbinați DataFrames cu pandas merge()
Cu funcția pandas DataFrame.merge(), puteți combina DataFrames folosind chei. Acest lucru vă permite să combinați în mod eficient date din diverse surse, permițându-vă să efectuați analize mai cuprinzătoare.
Care este sintaxa pentru pandas merge()?
Metoda Python pandas DataFrame merge() poate accepta o serie de parametri diferiți, permițând dezvoltatorilor să specifice modul în care trebuie combinate DataFrames. Sintaxa generală a funcției merge() este următoarea:
DataFrame.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)pythonCe parametri pot fi utilizați cu pandas merge?
Diversii parametri acceptați de merge() vă permit nu numai să specificați ce pandas DataFrames să combinați, ci și ce tip de îmbinare să utilizați, precum și alte detalii.
| Parametru | Descriere | Valoare implicită |
|---|---|---|
| stânga | Primul DataFrame care urmează să fie îmbinat | |
| dreapta | Al doilea DataFrame care urmează să fie îmbinat | |
| cum | Tipul operației de îmbinare care trebuie efectuată (inner, outer, left, right)
|
inner
|
| pe | Coloana (coloanele) sau nivelul (nivelurile) indexului care trebuie utilizate ca chei; trebuie să fie prezente în ambele DataFrame-uri. | |
| left_on | Coloana (coloanele) sau nivelul (nivelurile) indexului din DataFrame-ul din stânga care trebuie utilizate ca chei | |
| right_on | Coloana (coloanele) sau nivelul (nivelurile) indexului din DataFrame-ul din dreapta care trebuie utilizate ca chei | |
| left_index | Dacă este True, indexul DataFrame-ului din stânga este utilizat ca cheie
|
False
|
| right_index | Dacă este True, indexul DataFrame din dreapta este utilizat ca cheie.
|
False
|
| sort | Dacă True, cheile DataFrame rezultate sunt sortate lexicografic.
|
False
|
| sufixe | Sufixe utilizate pentru a distinge coloanele cu același nume. | ("_x", "_y")
|
| copie | Dacă False, se evită copierea
|
True
|
Cum se utilizează pandas merge()
Mai jos sunt câteva exemple care ilustrează modul de utilizare eficientă a pandas merge().
INNER JOIN
O INNER JOIN combină două DataFrame-uri pandas și returnează numai rândurile în care cheile se potrivesc în ambele DataFrame-uri. Pentru a înțelege mai bine cum funcționează acest lucru, să creăm două DataFrame-uri:
import pandas as pd
# Sample DataFrames
df1 = pd.DataFrame({
'Key': ['A', 'B', 'C'],
'Value1': [1, 2, 3]
})
df2 = pd.DataFrame({
'Key': ['B', 'C', 'D'],
'Value2': [4, 5, 6]
})
print(df1)
print(df2)pythonCele două cadre de date rezultate arată astfel:
Key Value1
0 A 1
1 B 2
2 C 3
Key Value2
0 B 4
1 C 5
2 D 6Acum, putem efectua o operație INNER JOIN folosind funcția merge():
# INNER JOIN
result = pd.merge(df1, df2, how='inner', on='Key')
print(result)pythonRezultatul arată că numai rândurile care au cheile B și C sunt incluse în DataFrame. Acest lucru se datorează faptului că aceste două chei există în ambele DataFrame-uri originale.
Key Value1 Value2
0 B 2 4
1 C 3 5OUTER JOIN
An OUTER JOIN combină, de asemenea, două DataFrames, dar spre deosebire de INNER JOIN, returnează toate rândurile și completează valorile lipsă cu NaN.
# OUTER JOIN
result = pd.merge(df1, df2, how='outer', on='Key')
print(result)pythonDataFrame-ul de mai jos include toate rândurile din ambele DataFrame-uri. NaN este utilizat pentru valorile lipsă din cheia A, care se află doar în df1, și cheia D, care se află doar în df2.
Key Value1 Value2
0 A 1.0 NaN
1 B 2.0 4.0
2 C 3.0 5.0
3 D NaN 6.0Celelalte variante standard ale JOIN funcționează în mod similar.
Utilizarea left_on și right_on
Uneori, două DataFrames au nume de coloane diferite pentru cheile lor. În acest caz, puteți utiliza parametrii left_on și right_on pentru a specifica coloanele care trebuie utilizate. Mai întâi, să creăm două DataFrames noi:
df3 = pd.DataFrame({
'Key': ['A', 'B', 'C'],
'Value1': [1, 2, 3]
})
df4 = pd.DataFrame({
'Key2': ['B', 'C', 'D'],
'Value2': [4, 5, 6]
})
print(df3)
print(df4)pythonCele două cadre de date arată astfel:
Key Value1
0 A 1
1 B 2
2 C 3
Key2 Value2
0 B 4
1 C 5
2 D 6Putem folosi parametrii left_on și right_on pentru a efectua operația JOIN folosind diferite chei:
# Join with different key column names
result = pd.merge(df3, df4, how='inner', left_on='Key', right_on='Key2')
print(result)pythonPrin utilizarea explicită a left_on='Key' și right_on='Key2', coloanele cheie corespunzătoare sunt utilizate pentru îmbinare.
Key Value1 Key2 Value2
0 B 2 B 4
1 C 3 C 5Utilizarea indicilor ca chei
De asemenea, puteți utiliza indicii DataFrames ca chei, setând parametrii left_index și right_index la True. Mai întâi, să creăm două noi DataFrames cu indici:
df5 = pd.DataFrame({
'Value1': [1, 2, 3]
}, index=['A', 'B', 'C'])
df6 = pd.DataFrame({
'Value2': [4, 5, 6]
}, index=['B', 'C', 'D'])
print(df5)
print(df6)pythonIată cadrele de date:
Value1
A 1
B 2
C 3
Value2
B 4
C 5
D 6Acum, putem efectua o operație JOIN folosind indicii:
# JOIN with indices
result = pd.merge(df5, df6, how='inner', left_index=True, right_index=True)
print(result)pythonRezultatul este un JOIN care utilizează indicii din DataFrames:
Value1 Value2
B 2 4
C 3 5