Kā apvienot DataFrames ar pandas merge()
Ar pandas funkciju DataFrame.merge() varat apvienot DataFrames, izmantojot atslēgas. Tas ļauj efektīvi apvienot datus no dažādiem avotiem, dodot iespēju veikt visaptverošākas analīzes.
Kāda ir pandas merge() sintakse?
Python pandas DataFrame merge() metode var pieņemt virkni dažādu parametru, ļaujot izstrādātājiem norādīt, kā DataFrames jākombinē. merge() funkcijas vispārīgā sintakse ir šāda:
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)pythonKādus parametrus var izmantot ar pandas merge?
Dažādie parametri, ko pieņem merge(), ļauj ne tikai norādīt, kurus pandas DataFrames apvienot, bet arī, kādu savienojuma veidu izmantot, kā arī citas detaļas.
| Parametrs | Apraksts | Noklusējuma vērtība |
|---|---|---|
| kreisais | Pirmais apvienojamais DataFrame | |
| labais | Otrais apvienojamais DataFrame | |
| kā | Veicamā apvienošanas operācijas veids (inner, outer, left, right)
|
inner
|
| uz | Kolonna(-as) vai indeksa līmenis(-i), kas jāizmanto kā atslēgas; jābūt abos DataFrame | |
| left_on | Kolonna(-as) vai indeksa līmenis(-i) kreisajā DataFrame, kas jāizmanto kā atslēga(-as) | |
| labais_uz | Labās DataFrame kolonna(-as) vai indeksa līmenis(-i), kas jāizmanto kā atslēga(-as) | |
| left_index | Ja True, kā atslēga tiek izmantots kreisā DataFrame indekss
|
False
|
| labais_indekss | Ja True, kā atslēga tiek izmantots labās DataFrame indekss.
|
False
|
| sort | Ja True, rezultātā iegūto DataFrame atslēgas tiek šķirotas leksikogrāfiski.
|
False
|
| suffixes | Piedēkļi, kas tiek izmantoti, lai atšķirtu kolonnas ar vienādu nosaukumu | ("_x", "_y")
|
| kopija | Ja False, kopēšana netiek veikta
|
True
|
Kā lietot pandas merge()
Zemāk ir daži piemēri, kas palīdz ilustrēt, kā efektīvi izmantot pandas merge().
INNER JOIN
INNER JOIN apvieno divus pandas DataFrames un atgriež tikai rindas, kurās atslēgas abos DataFrames saskan. Lai labāk izprastu, kā tas darbojas, izveidosim divus DataFrames:
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)pythonAbos rezultātā iegūtajos DataFrames izskatās šādi:
Key Value1
0 A 1
1 B 2
2 C 3
Key Value2
0 B 4
1 C 5
2 D 6Tagad mēs varam veikt INNER JOIN, izmantojot merge() funkciju:
# INNER JOIN
result = pd.merge(df1, df2, how='inner', on='Key')
print(result)pythonRezultāts parāda, ka DataFrame ir iekļautas tikai rindas, kurām ir atslēgas B un C. Tas ir tāpēc, ka šīs divas atslēgas ir abās sākotnējās DataFrame.
Key Value1 Value2
0 B 2 4
1 C 3 5OUTER JOIN
An OUTER JOIN arī apvieno divus DataFrames, bet atšķirībā no INNER JOIN, tas atgriež visas rindas un aizpilda trūkstošās vērtības ar NaN.
# OUTER JOIN
result = pd.merge(df1, df2, how='outer', on='Key')
print(result)pythonZemāk redzamajā DataFrame ir iekļautas visas rindas no abiem DataFrame. NaN tiek izmantots trūkstošajām vērtībām atslēgā A, kas ir tikai df1, un atslēgā D, kas ir tikai 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.0Pārējie standarta varianti JOIN darbojas līdzīgi.
Izmantojot left_on un right_on
Dažreiz diviem DataFrames ir atšķirīgi kolonnu nosaukumi to atslēgām. Šādā gadījumā varat izmantot left_on un right_on parametrus, lai norādītu, kuras kolonnu izmantot. Vispirms izveidosim divus jaunus DataFrames:
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)pythonAbas DataFrames izskatās šādi:
Key Value1
0 A 1
1 B 2
2 C 3
Key2 Value2
0 B 4
1 C 5
2 D 6Mēs varam izmantot left_on un right_on parametrus, lai veiktu JOIN operāciju, izmantojot dažādas taustiņus:
# Join with different key column names
result = pd.merge(df3, df4, how='inner', left_on='Key', right_on='Key2')
print(result)pythonIzmantojot left_on='Key' un right_on='Key2', apvienošanai tiek izmantotas atbilstošās atslēgas kolonnas.
Key Value1 Key2 Value2
0 B 2 B 4
1 C 3 C 5Indeksu izmantošana kā atslēgas
Jūs varat arī izmantot DataFrames indeksus kā atslēgas, iestatot left_index un right_index parametrus uz True. Vispirms izveidosim divus jaunus DataFrames ar indeksiem:
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)pythonŠeit ir datu rāmji:
Value1
A 1
B 2
C 3
Value2
B 4
C 5
D 6Tagad mēs varam veikt JOIN operācijas, izmantojot indeksus:
# JOIN with indices
result = pd.merge(df5, df6, how='inner', left_index=True, right_index=True)
print(result)pythonRezultāts ir JOIN, kas izmanto indeksus no DataFrames:
Value1 Value2
B 2 4
C 3 5