দুটি ডেটাফ্রেমের সাধারণ সারি (common rows) খুঁজে বের করার একটি পদ্ধতি হল concat() ফাংশন ব্যবহার করা। এই পদ্ধতিতে দুটি ডেটাফ্রেম একসাথে জোড়া দেওয়া হয়, তারপর ডুপ্লিকেট সারি খুঁজে বের করা হয়।
পদ্ধতি
pd.concat()দিয়ে দুটি ডেটাফ্রেম একত্রিত করাreset_index()দিয়ে ইনডেক্স রিসেট করাgroupby()দিয়ে সব কলাম অনুযায়ী গ্রুপ করা- যেসব গ্রুপের আকার ১-এর বেশি, সেগুলোই সাধারণ সারি
সম্পূর্ণ উদাহরণ
import pandas as pd
# প্রথম ডেটাফ্রেম
df1 = pd.DataFrame({
"Car": ['BMW', 'Lexus', 'Audi', 'Tesla', 'Bentley', 'Jaguar'],
"Reg_Price": [1000, 1500, 1100, 800, 1100, 900]
})
# দ্বিতীয় ডেটাফ্রেম
df2 = pd.DataFrame({
"Car": ['BMW', 'Lexus', 'Audi', 'Tesla', 'Bentley', 'Jaguar'],
"Reg_Price": [1200, 1500, 1000, 800, 1100, 1000]
})
print("ডেটাফ্রেম ১:")
print(df1)
print("\nডেটাফ্রেম ২:")
print(df2)
# concat() দিয়ে একত্রিত
combined = pd.concat([df1, df2]).reset_index(drop=True)
# সব কলাম অনুযায়ী গ্রুপ
grouped = combined.groupby(list(combined.columns))
# যেসব রো একাধিকবার আসেছে (len > 1), সেগুলো বের করা
common_indices = [k[0] for k in grouped.groups.values() if len(k) > 1]
common_rows = combined.reindex(common_indices)
print("\nসাধারণ সারিগুলো:")
print(common_rows)
আউটপুট
সাধারণ সারিগুলো:
Car Reg_Price
3 Tesla 800
1 Lexus 1500
4 Bentley 1100
এখানে Tesla-800, Lexus-1500, এবং Bentley-1100 — এই তিনটি সারি দুটি ডেটাফ্রেমেই একই আছে।
বিকল্প ও উন্নত পদ্ধতি
আধুনিক প্যান্ডাস ভার্সনে merge() ব্যবহার করা আরও কার্যকর এবং পঠনযোগ্য:
# ইনার জয়েন দিয়ে সাধারণ সারি বের করা (সুপারিশকৃত)
common_rows = pd.merge(df1, df2, on=["Car", "Reg_Price"], how="inner")
এই পদ্ধতিটি দ্রুত, কম মেমরি খায় এবং কোডও পরিষ্কার।