🐼 ΠŸΠ°Π½Π΄Ρ‹: ΠΊΠ°ΠΊ ΡΠΊΠ»Π΅ΠΈΡ‚ΡŒ Π΄Π²Π° dataframe

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ `concat()` ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Pandas для склСивания Π΄Π²ΡƒΡ… DataFrame. Π’ΠΎΡ‚ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

import pandas as pd

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ DataFrame
df1 = pd.DataFrame({'A': [1, 2, 3],
                    'B': ['a', 'b', 'c']})

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π²Ρ‚ΠΎΡ€ΠΎΠΉ DataFrame
df2 = pd.DataFrame({'C': [4, 5, 6],
                    'D': ['d', 'e', 'f']})

# Π‘ΠΊΠ»Π΅ΠΈΠ²Π°Π΅ΠΌ Π΄Π²Π° DataFrame
result = pd.concat([df1, df2], axis=1)

print(result)
Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ создаСт Π΄Π²Π° DataFrame: `df1` ΠΈ `df2`. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ `concat()` для склСивания этих Π΄Π²ΡƒΡ… DataFrame вдоль оси 1 (столбцы). Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ сохраняСтся Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ `result`. И, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, ΠΌΡ‹ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π° экран с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ `print(result)`.

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

pandas: ΠΊΠ°ΠΊ ΡΠΊΠ»Π΅ΠΈΡ‚ΡŒ Π΄Π²Π° dataframe

Π”ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΌΠΈΡ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ pandas! Π’ вашСм вопросС Π²Ρ‹ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΠ΅Ρ‚Π΅ΡΡŒ, ΠΊΠ°ΠΊ ΡΠΊΠ»Π΅ΠΈΡ‚ΡŒ Π΄Π²Π° dataframe. pandas прСдоставляСт нСсколько способов объСдинСния ΠΈΠ»ΠΈ склСивания dataframe Π² ΠΎΠ΄ΠΈΠ½. Рассмотрим Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ….

1. ΠœΠ΅Ρ‚ΠΎΠ΄ merge()

ΠœΠ΅Ρ‚ΠΎΠ΄ merge() позволяСт ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π΄Π²Π° dataframe Π½Π° основС ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΎΠ±Ρ‰ΠΈΡ… столбцов. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ dataframe, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ строки ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Ρ‹ Π² зависимости ΠΎΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² ΠΎΠ±Ρ‰ΠΈΡ… столбцах.


import pandas as pd

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄Π²ΡƒΡ… dataframe
df1 = pd.DataFrame({'Key': ['A', 'B', 'C', 'D'],
                    'Value1': [1, 2, 3, 4]})
df2 = pd.DataFrame({'Key': ['B', 'D', 'E', 'F'],
                    'Value2': [5, 6, 7, 8]})

# Π‘ΠΊΠ»Π΅ΠΈΠ²Π°Π½ΠΈΠ΅ dataframe ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ 'Key'
merged_df = pd.merge(df1, df2, on='Key')

print(merged_df)
    

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΌΡ‹ создали Π΄Π²Π° dataframe (df1 ΠΈ df2) ΠΈ объСдинили ΠΈΡ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° merge() ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ 'Key'. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ являСтся Π½ΠΎΠ²Ρ‹ΠΉ dataframe, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ строки ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Ρ‹ Π² зависимости ΠΎΡ‚ значСния ΠΊΠ»ΡŽΡ‡Π° 'Key'.

2. ΠœΠ΅Ρ‚ΠΎΠ΄ concat()

ΠœΠ΅Ρ‚ΠΎΠ΄ concat() позволяСт ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π΄Π²Π° ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ dataframe вдоль ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ оси (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ось 0, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ объСдинСниС происходит ΠΏΠΎ строкам). Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ dataframe, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ строки ΠΈΠ»ΠΈ столбцы ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Ρ‹ ΠΈΠ· исходных dataframe.


import pandas as pd

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄Π²ΡƒΡ… dataframe
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2'],
                    'B': ['B0', 'B1', 'B2']},
                   index=[0, 1, 2])
df2 = pd.DataFrame({'C': ['C0', 'C1', 'C2'],
                    'D': ['D0', 'D1', 'D2']},
                   index=[0, 1, 2])

# Π‘ΠΊΠ»Π΅ΠΈΠ²Π°Π½ΠΈΠ΅ dataframe ΠΏΠΎ строкам (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ)
concatenated_df = pd.concat([df1, df2])

print(concatenated_df)
    

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΌΡ‹ создали Π΄Π²Π° dataframe (df1 ΠΈ df2) ΠΈ объСдинили ΠΈΡ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° concat(). По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π±Ρ‹Π»ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ объСдинСниС ΠΏΠΎ строкам, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ось 0. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ являСтся Π½ΠΎΠ²Ρ‹ΠΉ dataframe, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ строки ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Ρ‹ ΠΈΠ· исходных dataframe.

3. ΠœΠ΅Ρ‚ΠΎΠ΄ join()

ΠœΠ΅Ρ‚ΠΎΠ΄ join() позволяСт ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π΄Π²Π° dataframe ΠΏΠΎ индСксам ΠΈΠ»ΠΈ столбцам. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ dataframe, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ происходит соСдинСниС Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· исходных dataframe.


import pandas as pd

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄Π²ΡƒΡ… dataframe
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2'],
                    'B': ['B0', 'B1', 'B2']},
                   index=[0, 1, 2])
df2 = pd.DataFrame({'C': ['C0', 'C1', 'C2'],
                    'D': ['D0', 'D1', 'D2']},
                   index=[1, 2, 3])

# БклСиваниС dataframe по индСксам
joined_df = df1.join(df2, how='inner')

print(joined_df)
    

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΌΡ‹ создали Π΄Π²Π° dataframe (df1 ΠΈ df2) ΠΈ объСдинили ΠΈΡ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° join(). Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΌΡ‹ объСдинили dataframe ΠΏΠΎ индСксам, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ how='inner' для выполнСния Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ соСдинСния (inner join). Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ являСтся Π½ΠΎΠ²Ρ‹ΠΉ dataframe, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ происходит соСдинСниС Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· исходных dataframe.

4. ΠœΠ΅Ρ‚ΠΎΠ΄ merge_ordered()

ΠœΠ΅Ρ‚ΠΎΠ΄ merge_ordered() позволяСт ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π΄Π²Π° dataframe, упорядочивая значСния ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ»ΠΈ нСскольким столбцам. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ dataframe, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ строки ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Ρ‹ Π² соотвСтствии с порядком Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ столбцов.


import pandas as pd

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄Π²ΡƒΡ… dataframe
df1 = pd.DataFrame({'Key': ['A', 'B', 'C', 'D'],
                    'Value1': [1, 2, 3, 4]})
df2 = pd.DataFrame({'Key': ['B', 'D', 'E', 'F'],
                    'Value2': [5, 6, 7, 8]})

# Π‘ΠΊΠ»Π΅ΠΈΠ²Π°Π½ΠΈΠ΅ dataframe с упорядочиваниСм ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ 'Key'
ordered_df = pd.merge_ordered(df1, df2, on='Key')

print(ordered_df)
    

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΌΡ‹ создали Π΄Π²Π° dataframe (df1 ΠΈ df2) ΠΈ объСдинили ΠΈΡ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° merge_ordered() ΠΏΠΎ ΠΊΠ»ΡŽΡ‡Ρƒ 'Key'. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ являСтся Π½ΠΎΠ²Ρ‹ΠΉ dataframe, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ строки ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Ρ‹ Π² соотвСтствии с порядком Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ столбца 'Key'.

5. ΠœΠ΅Ρ‚ΠΎΠ΄ combine_first()

ΠœΠ΅Ρ‚ΠΎΠ΄ combine_first() позволяСт ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π΄Π²Π° dataframe, заполняя ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Π΅ значСния Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ dataframe значСниями ΠΈΠ· Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ dataframe. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ dataframe, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Π΅ значСния Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ значСниями ΠΈΠ· Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ dataframe.


import pandas as pd

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π΄Π²ΡƒΡ… dataframe
df1 = pd.DataFrame({'A': [1, 2, None, 4],
                    'B': [None, 6, 7, 8]})
df2 = pd.DataFrame({'A': [10, 20, 30, 40],
                    'B': [50, None, 70, None]})

# Π‘ΠΊΠ»Π΅ΠΈΠ²Π°Π½ΠΈΠ΅ dataframe с Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ
combined_df = df1.combine_first(df2)

print(combined_df)
    

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΌΡ‹ создали Π΄Π²Π° dataframe (df1 ΠΈ df2) ΠΈ объСдинили ΠΈΡ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° combine_first(). Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ являСтся Π½ΠΎΠ²Ρ‹ΠΉ dataframe, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Π΅ значСния Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ dataframe Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ значСниями ΠΈΠ· Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ dataframe.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрСли нСсколько способов объСдинСния ΠΈΠ»ΠΈ склСивания dataframe Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ pandas. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ подходящий ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² зависимости ΠΎΡ‚ вашСй Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°. НС ΡΡ‚Π΅ΡΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, доступныС Π² pandas.

УспСхов Π² Ρ€Π°Π±ΠΎΡ‚Π΅ с pandas!

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

Π£Ρ€ΠΎΠΊ 4. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ Π°Π½Π°Π»ΠΈΠ· Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° Python. ОбъСдинСниС Π΄Π°Ρ‚Π°Ρ„Ρ€Π΅ΠΉΠΌΠΎΠ² Π² Pandas

ОбъСдинСниС Π΄Π°Π½Π½Ρ‹Ρ…, ΠΌΠ΅Ρ‚ΠΎΠ΄ merge | Аналитик Π΄Π°Π½Π½Ρ‹Ρ… | karpov.courses

Pandas Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ β„–2. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ DataFrame 2

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

🐼 ΠŸΠ°Π½Π΄Ρ‹: ΠΊΠ°ΠΊ ΡΠΊΠ»Π΅ΠΈΡ‚ΡŒ Π΄Π²Π° dataframe