Cara mendapatkan bingkai data gabungan dari dua bingkai data yang memiliki nilai kolom yang sama sehingga hanya baris-baris tersebut yang membuat bingkai data gabungan yang memiliki nilai yang sama pada kolom tertentu.
Saya memiliki 5000 baris df1
sebagai format: -
director_name actor_1_name actor_2_name actor_3_name movie_title
0 James Cameron CCH Pounder Joel David Moore Wes Studi Avatar
1 Gore Verbinski Johnny Depp Orlando Bloom Jack Davenport Pirates
of the Caribbean: At World's End
2 Sam Mendes Christoph Waltz Rory Kinnear Stephanie Sigman Spectre
dan 10000 baris df2
sebagai
movieId genres movie_title
1 Adventure|Animation|Children|Comedy|Fantasy Toy Story
2 Adventure|Children|Fantasy Jumanji
3 Comedy|Romance Grumpier Old Men
4 Comedy|Drama|Romance Waiting to Exhale
Kolom umum 'movie_title' memiliki nilai yang sama dan berdasarkan nilai tersebut, saya ingin mendapatkan semua baris di mana 'movie_title' adalah sama. Baris lain yang akan dihapus.
Bantuan/saran akan sangat dihargai.
Catatan: Saya sudah mencoba
pd.merge(dfinal, df1, on='movie_title')
dan output yang dihasilkan seperti satu baris
director_name actor_1_name actor_2_name actor_3_name movie_title movieId title genres
dan bagaimana ="outer"/"left", "right", saya mencoba semua dan tidak mendapatkan baris apapun setelah menjatuhkan NaN meskipun banyak kolom umum yang ada.
Anda bisa menggunakan pd.merge
:
import pandas as pd
pd.merge(df1, df2, on="movie_title")
Hanya baris-baris yang disimpan untuk kunci umum yang ditemukan di kedua bingkai data. Jika Anda ingin menyimpan semua baris dari bingkai data kiri dan hanya menambahkan nilai dari df2
di mana kunci yang cocok tersedia, Anda dapat menggunakan how="left"
.
Kita dapat menggabungkan dua Data frame dengan beberapa cara. Cara yang paling umum dalam python adalah menggunakan operasi penggabungan di Pandas.
import pandas
dfinal = df1.merge(df2, on="movie_title", how = 'inner')
Untuk penggabungan berdasarkan kolom-kolom dari dataframe yang berbeda, Anda dapat menentukan nama kolom umum kiri dan kanan secara khusus jika terjadi ambiguitas dua nama yang berbeda dari kolom yang sama, katakanlah - 'movie_title'
sebagai 'movie_name'
.
dfinal = df1.merge(df2, how='inner', left_on='movie_title', right_on='movie_name')
Jika anda ingin lebih spesifik lagi, anda dapat membaca dokumentasi operasi pandas merge
.
Jika Anda ingin menggabungkan dua bingkai data dan Anda ingin bingkai data gabungan di mana hanya nilai umum dari kedua bingkai data yang akan muncul, maka lakukan penggabungan bagian dalam.
import pandas as pd
merged_Frame = pd.merge(df1,df2, on = id,how=inner)