π ΠΠ°ΠΊ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π΄Π°ΡΠ°ΡΠ΅ΡΡ pandas Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌΠΈ?
Π§ΡΠΎΠ±Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π΄Π°ΡΠ°ΡΠ΅ΡΡ pandas Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ concat().
import pandas as pd
# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄Π²ΡΡ
Π΄Π°ΡΠ°ΡΠ΅ΡΠΎΠ² Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌΠΈ
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'A': [7, 8, 9], 'B': [10, 11, 12]})
# ΠΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π΄Π°ΡΠ°ΡΠ΅ΡΠΎΠ² ΠΏΠΎ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΠΈ
df_combined = pd.concat([df1, df2])
# ΠΡΠ²ΠΎΠ΄ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΠΎΠ³ΠΎ Π΄Π°ΡΠ°ΡΠ΅ΡΠ°
print(df_combined)
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π΄Π²Π° Π΄Π°ΡΠ°ΡΠ΅ΡΠ°, df1 ΠΈ df2, Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌΠΈ 'A' ΠΈ 'B'. ΠΠ°ΡΠ΅ΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° concat() Π΄Π°ΡΠ°ΡΠ΅ΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡΡΡ ΠΏΠΎ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΠΈ, ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ df_combined. ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡΠΉ Π΄Π°ΡΠ°ΡΠ΅Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΡΠΊΡΠ°Π½.
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡ Π΄Π°ΡΠ°ΡΠ΅ΡΡ pandas Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌΠΈ
Π ΠΌΠΈΡΠ΅ Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½ΡΡ ΠΈ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ, ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π΄Π°ΡΠ°ΡΠ΅ΡΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ Π·Π°Π΄Π°Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π΅ΡΠ΅Π΄ΠΊΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ. Pandas - ΠΌΠΎΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ Π² Python, ΠΈ ΠΎΠ½Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΠΎΡΡΡΠ΅ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄Π»Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π΄Π°ΡΠ°ΡΠ΅ΡΠΎΠ² Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌΠΈ.
1. Inner Join
ΠΠ½ΡΡΡΠ΅Π½Π½Π΅Π΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ (inner join) Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠΌΠ΅ΡΡ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΠΎΠ±ΠΎΠΈΡ
Π΄Π°ΡΠ°ΡΠ΅ΡΠ°Ρ
Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ. ΠΠ»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ inner join Π² Pandas, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ merge
.
import pandas as pd
df1 = pd.DataFrame({'Key': ['A', 'B', 'C', 'D'],
'Value': [1, 2, 3, 4]})
df2 = pd.DataFrame({'Key': ['B', 'D', 'E', 'F'],
'Value': [5, 6, 7, 8]})
merged_df = pd.merge(df1, df2, on='Key', how='inner')
print(merged_df)
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅, Π΄Π°ΡΠ°ΡΠ΅ΡΡ df1
ΠΈ df2
ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡΡΡ ΠΏΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ 'Key' Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ. Π‘ΠΎΠ·Π΄Π°Π½Π½ΡΠΉ Π΄Π°ΡΠ°ΡΠ΅Ρ merged_df
Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊΠΈ Ρ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡΠΈΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ 'Key'.
2. Left Join
ΠΠ΅Π²ΠΎΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ (left join) Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΈΠ· Π»Π΅Π²ΠΎΠ³ΠΎ Π΄Π°ΡΠ°ΡΠ΅ΡΠ° ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΈΠ· ΠΏΡΠ°Π²ΠΎΠ³ΠΎ Π΄Π°ΡΠ°ΡΠ΅ΡΠ° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ. ΠΠ»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ left join Π² Pandas, ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ merge
, ΡΠΊΠ°Π·Π°Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ how='left'
.
left_merged_df = pd.merge(df1, df2, on='Key', how='left')
print(left_merged_df)
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅, Π»Π΅Π²ΡΠΉ Π΄Π°ΡΠ°ΡΠ΅Ρ df1
ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅ΡΡΡ Ρ ΠΏΡΠ°Π²ΡΠΌ Π΄Π°ΡΠ°ΡΠ΅ΡΠΎΠΌ df2
ΠΏΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ 'Key' Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π»Π΅Π²ΠΎΠ³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ. Π’Π΅ΠΏΠ΅ΡΡ Π΄Π°ΡΠ°ΡΠ΅Ρ left_merged_df
ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΈΠ· Π»Π΅Π²ΠΎΠ³ΠΎ Π΄Π°ΡΠ°ΡΠ΅ΡΠ° ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΈΠ· ΠΏΡΠ°Π²ΠΎΠ³ΠΎ Π΄Π°ΡΠ°ΡΠ΅ΡΠ°.
3. Right Join
ΠΡΠ°Π²ΠΎΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ (right join) Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΈΠ· ΠΏΡΠ°Π²ΠΎΠ³ΠΎ Π΄Π°ΡΠ°ΡΠ΅ΡΠ° ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΈΠ· Π»Π΅Π²ΠΎΠ³ΠΎ Π΄Π°ΡΠ°ΡΠ΅ΡΠ° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ. ΠΠ»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ right join Π² Pandas, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ merge
Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ how='right'
.
right_merged_df = pd.merge(df1, df2, on='Key', how='right')
print(right_merged_df)
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅, ΠΏΡΠ°Π²ΡΠΉ Π΄Π°ΡΠ°ΡΠ΅Ρ df2
ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅ΡΡΡ Ρ Π»Π΅Π²ΡΠΌ Π΄Π°ΡΠ°ΡΠ΅ΡΠΎΠΌ df1
ΠΏΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ 'Key' Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΡΠ°Π²ΠΎΠ³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ. Π‘ΠΎΠ·Π΄Π°Π½Π½ΡΠΉ Π΄Π°ΡΠ°ΡΠ΅Ρ right_merged_df
Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΈΠ· ΠΏΡΠ°Π²ΠΎΠ³ΠΎ Π΄Π°ΡΠ°ΡΠ΅ΡΠ° ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΈΠ· Π»Π΅Π²ΠΎΠ³ΠΎ Π΄Π°ΡΠ°ΡΠ΅ΡΠ°.
4. Outer Join
ΠΠ½Π΅ΡΠ½Π΅Π΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ (outer join) Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΈΠ· ΠΎΠ±ΠΎΠΈΡ
Π΄Π°ΡΠ°ΡΠ΅ΡΠΎΠ² Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ. ΠΡΠΎΠΏΡΡΠ΅Π½Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π·Π°ΠΏΠΎΠ»Π½ΡΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ NaN. ΠΠ»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ outer join Π² Pandas, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ merge
Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ how='outer'
.
outer_merged_df = pd.merge(df1, df2, on='Key', how='outer')
print(outer_merged_df)
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅, ΠΎΠ±Π° Π΄Π°ΡΠ°ΡΠ΅ΡΠ° df1
ΠΈ df2
ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡΡΡ ΠΏΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ 'Key' Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ. Π‘ΠΎΠ·Π΄Π°Π½Π½ΡΠΉ Π΄Π°ΡΠ°ΡΠ΅Ρ outer_merged_df
Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΈΠ· ΠΎΠ±ΠΎΠΈΡ
Π΄Π°ΡΠ°ΡΠ΅ΡΠΎΠ².