πŸ”— Как ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π΄Π²Π° series pandas: Π»Π΅Π³ΠΊΠΈΠΉ способ объСдинСния Π² Pandas πŸ”—

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π΄Π²Π° Series Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Pandas, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ concat(). Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

import pandas as pd

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Series
series1 = pd.Series([1, 2, 3])

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Series
series2 = pd.Series([4, 5, 6])

# ОбъСдинСниС Π΄Π²ΡƒΡ… Series
result = pd.concat([series1, series2])

# Π’Ρ‹Π²ΠΎΠ΄ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°
print(result)

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ создаСт Π΄Π²Π° Series: series1 ΠΈ series2, Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ concat() для ΠΈΡ… объСдинСния. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ сохраняСтся Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ result ΠΈ выводится Π½Π° экран.

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

Как ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π΄Π²Π° series pandas

ОбъСдинСниС Π΄Π²ΡƒΡ… сСрий (Series) Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Pandas позволяСт ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Π΄Π²ΡƒΡ… Ρ€Π°Π·Π½Ρ‹Ρ… сСрий ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ ΡΠ΅Ρ€ΠΈΡŽ. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим нСсколько способов объСдинСния сСрий с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

1. ИспользованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ `.append()`

Ѐункция `.append()` позволяСт Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΡΠ΅Ρ€ΠΈΡŽ ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΉ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Ρ‚ΠΎ ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ строками Π² ΠΊΠΎΠ½Ρ†Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:


import pandas as pd

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΡΠ΅Ρ€ΠΈΡŽ
series1 = pd.Series([1, 2, 3])

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π²Ρ‚ΠΎΡ€ΡƒΡŽ ΡΠ΅Ρ€ΠΈΡŽ
series2 = pd.Series([4, 5, 6])

# ОбъСдиняСм сСрии
combined_series = series1.append(series2)

print(combined_series)
    

Π’Ρ‹Π²ΠΎΠ΄:


0    1
1    2
2    3
0    4
1    5
2    6
dtype: int64
    

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ объСдинСния пСрвая сСрия остаСтся Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΠΉ, Π° вторая сСрия добавляСтся Π² ΠΊΠΎΠ½Π΅Ρ†. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ индСксы Π²Ρ‚ΠΎΡ€ΠΎΠΉ сСрии автоматичСски ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ с индСксами ΠΏΠ΅Ρ€Π²ΠΎΠΉ сСрии.

2. ИспользованиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ (`pd.concat()`) позволяСт ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π΄Π²Π΅ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ сСрий вдоль ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ оси. Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€:


import pandas as pd

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΡΠ΅Ρ€ΠΈΡŽ
series1 = pd.Series([1, 2, 3])

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π²Ρ‚ΠΎΡ€ΡƒΡŽ ΡΠ΅Ρ€ΠΈΡŽ
series2 = pd.Series([4, 5, 6])

# ОбъСдиняСм сСрии
combined_series = pd.concat([series1, series2])

print(combined_series)
    

Π’Ρ‹Π²ΠΎΠ΄:


0    1
1    2
2    3
0    4
1    5
2    6
dtype: int64
    

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ список сСрий Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ `pd.concat()`, ΠΈ ΠΎΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡƒΡŽ ΡΠ΅Ρ€ΠΈΡŽ. БоздаСтся новая сСрия, Π³Π΄Π΅ значСния ΠΈΠ· ΠΏΠ΅Ρ€Π²ΠΎΠΉ сСрии ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ ΠΏΠ΅Ρ€Π΅Π΄ значСниями ΠΈΠ· Π²Ρ‚ΠΎΡ€ΠΎΠΉ сСрии.

3. ИспользованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ `.combine_first()`

Ѐункция `.combine_first()` позволяСт ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π΄Π²Π΅ сСрии, Π·Π°ΠΏΠΎΠ»Π½ΠΈΠ² ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Π΅ значСния Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ сСрии значСниями ΠΈΠ· Π²Ρ‚ΠΎΡ€ΠΎΠΉ сСрии. Если значСния Π²Ρ‚ΠΎΡ€ΠΎΠΉ сСрии ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ, Ρ‚ΠΎ ΠΎΠ½ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€:


import pandas as pd

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΡΠ΅Ρ€ΠΈΡŽ
series1 = pd.Series([1, 2, None, 4])

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π²Ρ‚ΠΎΡ€ΡƒΡŽ ΡΠ΅Ρ€ΠΈΡŽ
series2 = pd.Series([10, None, 30, 40])

# ОбъСдиняСм сСрии
combined_series = series1.combine_first(series2)

print(combined_series)
    

Π’Ρ‹Π²ΠΎΠ΄:


0     1.0
1     2.0
2    30.0
3     4.0
dtype: float64
    

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Π΅ значСния Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ сСрии Π·Π°ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ значСниями ΠΈΠ· Π²Ρ‚ΠΎΡ€ΠΎΠΉ сСрии. Если значСния ΡƒΠΆΠ΅ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ сСрии, ΠΎΠ½ΠΈ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ. Если значСния ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ сСрии, Ρ‚ΠΎ ΠΈΠ· Π²Ρ‚ΠΎΡ€ΠΎΠΉ сСрии бСрутся Π½ΠΎΠ²Ρ‹Π΅ значСния.

4. ИспользованиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ соСдинСния (merge)

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ соСдинСния (`pd.merge()`) позволяСт ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π΄Π²Π΅ сСрии, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠ±Ρ‰ΠΈΠ΅ значСния индСксов ΠΈΠ»ΠΈ столбцов. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€:


import pandas as pd

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΡΠ΅Ρ€ΠΈΡŽ с индСксами
series1 = pd.Series(data=[10, 20, 30], index=['A', 'B', 'C'])

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π²Ρ‚ΠΎΡ€ΡƒΡŽ ΡΠ΅Ρ€ΠΈΡŽ с индСксами
series2 = pd.Series(data=[40, 50, 60], index=['B', 'C', 'D'])

# ОбъСдиняСм сСрии
combined_series = pd.merge(series1, series2, left_index=True, right_index=True)

print(combined_series)
    

Π’Ρ‹Π²ΠΎΠ΄:


    B    20
    C    30
dtype: int64
    

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ `pd.merge()` ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ ΠΎΠ±Π΅ сСрии ΠΊΠ°ΠΊ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹. ΠœΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ соСдинСниС Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎ индСксам, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ `left_index=True` ΠΈ `right_index=True`. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ являСтся новая сСрия, содСрТащая Ρ‚ΠΎΠ»ΡŒΠΊΠΎ значСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ±Ρ‰ΠΈΠ΅ индСксы Π² ΠΎΠ±Π΅ΠΈΡ… сСриях.

5. ИспользованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ `.combine()`

Ѐункция `.combine()` позволяСт ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π΄Π²Π΅ сСрии, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для опрСдСлСния, ΠΊΠ°ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±Ρ€Π°Ρ‚ΡŒ ΠΈΠ· ΠΊΠ°ΠΆΠ΄ΠΎΠΉ сСрии. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€:


import pandas as pd

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΡΠ΅Ρ€ΠΈΡŽ
series1 = pd.Series([1, 2, 3, 4])

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π²Ρ‚ΠΎΡ€ΡƒΡŽ ΡΠ΅Ρ€ΠΈΡŽ
series2 = pd.Series([10, 20, 30, 40])

# ОбъСдиняСм сСрии с использованиСм ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
combined_series = series1.combine(series2, max)

print(combined_series)
    

Π’Ρ‹Π²ΠΎΠ΄:


0    10
1    20
2    30
3    40
dtype: int64
    

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ `combine()` ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π² Π½Π΅Π΅ Π²Ρ‚ΠΎΡ€ΡƒΡŽ ΡΠ΅Ρ€ΠΈΡŽ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ `max` Π² качСствС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ. Ѐункция `max` Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя значСниями ΠΈΠ· сСрий для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ индСкса.

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

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрСли Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ способы объСдинСния Π΄Π²ΡƒΡ… сСрий Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Pandas. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ подходящий способ Π² зависимости ΠΎΡ‚ Π²Π°ΡˆΠΈΡ… потрСбностСй. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ `.append()`, `pd.concat()`, `.combine_first()`, `pd.merge()` ΠΈ `.combine()` для ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ объСдинСния Π²Π°ΡˆΠΈΡ… сСрий.

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

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

Как ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Series Π² DataFrame - Ρ‡Π°ΡΡ‚ΡŒ 2. ΠšΡƒΡ€Ρ "Pandas для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…"

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

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

πŸ”— Как ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π΄Π²Π° series pandas: Π»Π΅Π³ΠΊΠΈΠΉ способ объСдинСния Π² Pandas πŸ”—

Как Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ boxplot Π² pandas: ΡƒΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ руководство с πŸ“ŠπŸΌ