Πώς να συγχωνεύσετε DataFrames με την εντολή pandas merge()
Με τη συνάρτηση pandas DataFrame.merge(), μπορείτε να συνδυάσετε DataFrames χρησιμοποιώντας κλειδιά. Αυτό σας επιτρέπει να συνδυάσετε αποτελεσματικά δεδομένα από διάφορες πηγές, δίνοντάς σας τη δυνατότητα να πραγματοποιήσετε πιο ολοκληρωμένες αναλύσεις.
Ποια είναι η σύνταξη για το pandas merge();
Η μέθοδος DataFrame merge() της Python pandas μπορεί να δεχτεί μια σειρά διαφορετικών παραμέτρων, επιτρέποντας στους προγραμματιστές να καθορίσουν τον τρόπο συνδυασμού των DataFrames. Η γενική σύνταξη της συνάρτησης merge() έχει ως εξής:
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)pythonΠοιες παράμετροι μπορούν να χρησιμοποιηθούν με το pandas merge;
Οι διάφορες παράμετροι που δέχεται merge() σας επιτρέπουν όχι μόνο να καθορίσετε ποια DataFrames pandas θα συνδυάσετε, αλλά και τον τύπο σύνδεσης που θα χρησιμοποιήσετε, καθώς και άλλες λεπτομέρειες.
| Παράμετρος | Περιγραφή | Προεπιλεγμένη τιμή |
|---|---|---|
| αριστερά | Το πρώτο DataFrame που θα συγχωνευθεί | |
| δεξιά | Το δεύτερο DataFrame που θα συγχωνευθεί | |
| πώς | Ο τύπος της συνένωσης που θα εκτελεστεί (inner, outer, left, right)
|
inner
|
| σε | Η στήλη ή οι στήλες ή τα επίπεδα ευρετηρίου που θα χρησιμοποιηθούν ως κλειδιά. Πρέπει να υπάρχουν και στα δύο DataFrames. | |
| left_on | Η στήλη ή οι στήλες ή τα επίπεδα ευρετηρίου του αριστερού DataFrame που πρέπει να χρησιμοποιηθούν ως κλειδιά | |
| right_on | Η στήλη ή οι στήλες ή τα επίπεδα ευρετηρίου του δεξιού DataFrame που πρέπει να χρησιμοποιηθούν ως κλειδιά | |
| left_index | Εάν είναι True, ο δείκτης του αριστερού DataFrame χρησιμοποιείται ως κλειδί
|
False
|
| right_index | Εάν είναι True, ο δείκτης του δεξιού DataFrame χρησιμοποιείται ως κλειδί.
|
False
|
| sort | Εάν True, τα κλειδιά του DataFrame που προκύπτει ταξινομούνται λεξικογραφικά.
|
False
|
| επιθήματα | Επιθήματα που χρησιμοποιούνται για τη διάκριση στηλών με το ίδιο όνομα. | ("_x", "_y")
|
| αντίγραφο | Εάν False, αποφεύγεται η αντιγραφή
|
True
|
Πώς να χρησιμοποιήσετε το pandas merge()
Ακολουθούν μερικά παραδείγματα που θα σας βοηθήσουν να κατανοήσετε πώς να χρησιμοποιείτε αποτελεσματικά το pandas merge().
INNER JOIN
Ένα INNER JOIN συνδυάζει δύο DataFrames pandas και επιστρέφει μόνο τις σειρές όπου τα κλειδιά ταιριάζουν και στα δύο DataFrames. Για να κατανοήσουμε καλύτερα πώς λειτουργεί αυτό, ας δημιουργήσουμε δύο 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)pythonΤα δύο DataFrames που προκύπτουν έχουν την εξής μορφή:
Key Value1
0 A 1
1 B 2
2 C 3
Key Value2
0 B 4
1 C 5
2 D 6Τώρα, μπορούμε να εκτελέσουμε ένα INNER JOIN χρησιμοποιώντας τη συνάρτηση merge():
# INNER JOIN
result = pd.merge(df1, df2, how='inner', on='Key')
print(result)pythonΤο αποτέλεσμα δείχνει ότι μόνο οι σειρές που έχουν τα κλειδιά B και C περιλαμβάνονται στο DataFrame. Αυτό συμβαίνει επειδή αυτά τα δύο κλειδιά υπάρχουν και στα δύο αρχικά DataFrames.
Key Value1 Value2
0 B 2 4
1 C 3 5OUTER JOIN
Το OUTER JOIN επίσης συγχωνεύει δύο DataFrames, αλλά σε αντίθεση με INNER JOIN, επιστρέφει όλες τις σειρές και συμπληρώνει τις ελλείπουσες τιμές με NaN.
# OUTER JOIN
result = pd.merge(df1, df2, how='outer', on='Key')
print(result)pythonΤο παρακάτω DataFrame περιλαμβάνει όλες τις σειρές και από τα δύο DataFrames. NaN χρησιμοποιείται για τις ελλείπουσες τιμές στο κλειδί A, το οποίο υπάρχει μόνο στο df1, και στο κλειδί D, το οποίο υπάρχει μόνο στο 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.0Οι άλλες τυπικές παραλλαγές του JOIN λειτουργούν με παρόμοιο τρόπο.
Χρήση left_on και right_on
Μερικές φορές, δύο DataFrames έχουν διαφορετικά ονόματα στηλών για τα κλειδιά τους. Σε αυτή την περίπτωση, μπορείτε να χρησιμοποιήσετε τις παραμέτρους left_on και right_on για να καθορίσετε ποιες στήλες θα χρησιμοποιηθούν. Αρχικά, ας δημιουργήσουμε δύο νέα 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)pythonΤα δύο DataFrames έχουν την εξής μορφή:
Key Value1
0 A 1
1 B 2
2 C 3
Key2 Value2
0 B 4
1 C 5
2 D 6Μπορούμε να χρησιμοποιήσουμε τις παραμέτρους left_on και right_on για να εκτελέσουμε τη λειτουργία JOIN χρησιμοποιώντας διαφορετικά κλειδιά:
# Join with different key column names
result = pd.merge(df3, df4, how='inner', left_on='Key', right_on='Key2')
print(result)pythonΜε τη ρητή χρήση left_on='Key' και right_on='Key2', οι αντίστοιχες στήλες κλειδιών χρησιμοποιούνται για τη συγχώνευση.
Key Value1 Key2 Value2
0 B 2 B 4
1 C 3 C 5Χρήση δεικτών ως κλειδιών
Μπορείτε επίσης να χρησιμοποιήσετε τους δείκτες των DataFrames ως κλειδιά, ορίζοντας τις παραμέτρους left_index και right_index σε True. Αρχικά, ας δημιουργήσουμε δύο νέα DataFrames με δείκτες:
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Ακολουθούν τα DataFrames:
Value1
A 1
B 2
C 3
Value2
B 4
C 5
D 6Τώρα, μπορούμε να εκτελέσουμε μια λειτουργία JOIN χρησιμοποιώντας τους δείκτες:
# JOIN with indices
result = pd.merge(df5, df6, how='inner', left_index=True, right_index=True)
print(result)pythonΤο αποτέλεσμα είναι ένα JOIN που χρησιμοποιεί τους δείκτες από τα DataFrames:
Value1 Value2
B 2 4
C 3 5