Kuidas ühendada DataFrames pandas merge() abil
Funktsiooni pandas DataFrame.merge() abil saate kombineerida DataFrames’i võtmeid kasutades. See võimaldab teil tõhusalt kombineerida erinevatest allikatest pärit andmeid, mis võimaldab teil teha põhjalikumaid analüüse.
Mis on pandas merge() süntaks?
Python pandas DataFrame merge() meetod võtab vastu mitmesuguseid parameetreid, mis võimaldab arendajatel määrata, kuidas DataFrames’i tuleks kombineerida. merge() funktsiooni üldine süntaks on järgmine:
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)pythonMilliseid parameetreid saab kasutada pandas merge-ga?
merge() poolt aktsepteeritavad erinevad parameetrid võimaldavad teil määrata mitte ainult, millised pandas DataFrames’id ühendada, vaid ka millist liitmist kasutada, samuti muid detaile.
| Parameeter | Kirjeldus | Vaikimisi väärtus |
|---|---|---|
| vasak | Esimene ühendatav andmeraamistik | |
| parem | Teine ühendatav andmestik | |
| kuidas | Teostatava ühendamise tüüp (inner, outer, left, right)
|
inner
|
| on | Võtmetena kasutatavad veerud või indeksitasemed; peavad olema olemas mõlemas DataFrame’is | |
| vasakul | Vasaku DataFrame’i veerg(ud) või indeksitasand(id), mida tuleks kasutada võtmena | |
| right_on | Parempoolse DataFrame’i veerg(ud) või indeksitasand(id), mida tuleks kasutada võtmena | |
| left_index | Kui True, kasutatakse vasaku DataFrame’i indeksit võtmena
|
False
|
| right_index | Kui True, kasutatakse parempoolse DataFrame’i indeksit võtmena.
|
False
|
| sort | Kui True, sorteeritakse tulemusliku DataFrame’i võtmed leksikograafiliselt.
|
False
|
| sufiksid | Sufiksid, mida kasutatakse sama nimega veergude eristamiseks. | ("_x", "_y")
|
| kopeerimine | Kui False, siis koopiat ei tehta
|
True
|
Kuidas kasutada pandas merge()
Allpool on toodud mõned näited, mis aitavad illustreerida, kuidas pandas merge() efektiivselt kasutada.
INNER JOIN
INNER JOIN ühendab kaks pandas DataFrames’i ja tagastab ainult need read, mille võtmed mõlemas DataFrames’is ühtivad. Et paremini mõista, kuidas see toimib, loome kaks DataFrames’i:
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)pythonKaks tulemuseks saadud andmestruktuuri näevad välja järgmised:
Key Value1
0 A 1
1 B 2
2 C 3
Key Value2
0 B 4
1 C 5
2 D 6Nüüd saame teha INNER JOIN, kasutades funktsiooni merge():
# INNER JOIN
result = pd.merge(df1, df2, how='inner', on='Key')
print(result)pythonVäljund näitab, et ainult read, millel on võtmed B ja C, on lisatud DataFrame’i. Seda seetõttu, et need kaks võtit on olemas mõlemas algses DataFrame’is.
Key Value1 Value2
0 B 2 4
1 C 3 5OUTER JOIN
An OUTER JOIN ühendab samuti kaks DataFrame’i, kuid erinevalt INNER JOIN tagastab see kõik read ja täidab puuduvad väärtused NaNga.
# OUTER JOIN
result = pd.merge(df1, df2, how='outer', on='Key')
print(result)pythonAllpool olev DataFrame sisaldab mõlema DataFrame’i kõiki ridu. NaN kasutatakse puuduvate väärtuste jaoks võtmes A, mis on ainult df1, ja võtmes D, mis on ainult df2-s.
Key Value1 Value2
0 A 1.0 NaN
1 B 2.0 4.0
2 C 3.0 5.0
3 D NaN 6.0Teised JOIN standardvariandid töötavad sarnaselt.
Kasutades left_on ja right_on
Mõnikord on kahel DataFrame’il erinevad veerunimed võtmetena. Sel juhul saate kasutada parameetreid left_on ja right_on, et määrata, milliseid veerge kasutada. Esmalt loome kaks uut DataFrame’i:
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)pythonKaks DataFrame’i näevad välja järgmised:
Key Value1
0 A 1
1 B 2
2 C 3
Key2 Value2
0 B 4
1 C 5
2 D 6Me saame kasutada parameetreid left_on ja right_on, et teostada operatsiooni JOIN erinevate võtmete abil:
# Join with different key column names
result = pd.merge(df3, df4, how='inner', left_on='Key', right_on='Key2')
print(result)pythonSelgesõnaliselt kasutades left_on='Key' ja right_on='Key2', kasutatakse vastavaid võtmeveerge ühendamiseks.
Key Value1 Key2 Value2
0 B 2 B 4
1 C 3 C 5Indeksite kasutamine võtmetena
Võite kasutada ka DataFrames’i indeksite võtmeid, seadistades parameetrid left_index ja right_index väärtusele True. Esmalt loome kaks uut DataFrames’i indeksitega:
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)pythonSiin on andmestruktuurid:
Value1
A 1
B 2
C 3
Value2
B 4
C 5
D 6Nüüd saame indeksite abil teha JOIN operatsiooni:
# JOIN with indices
result = pd.merge(df5, df6, how='inner', left_index=True, right_index=True)
print(result)pythonTulemuseks on JOIN, mis kasutab DataFrames’i indekseid:
Value1 Value2
B 2 4
C 3 5