Как объединить два столбца в Pandas (с примерами)


Вы можете использовать следующий синтаксис для объединения двух текстовых столбцов в один в кадре данных pandas:

df['new_column'] = df['column1'] + df['column2']

Если один из столбцов еще не является строкой, вы можете преобразовать его с помощью команды astype(str) :

df['new_column'] = df['column1'].astype ( str ) + df['column2']

И вы можете использовать следующий синтаксис для объединения нескольких текстовых столбцов в один:

df['new_column'] = df[['col1', 'col2', 'col3', ...]]. agg(''. join , axis= 1 ) 

В следующих примерах показано, как на практике объединять текстовые столбцы.

Пример 1: объединение двух столбцов

Следующий код показывает, как объединить два текстовых столбца в один в кадре данных pandas:

import pandas as pd

#create dataFrame
df = pd.DataFrame({'team': ['Mavs', 'Lakers', 'Spurs', 'Cavs'],
 'first': ['Dirk', 'Kobe', 'Tim', 'Lebron'],
 'last': ['Nowitzki', 'Bryant', 'Duncan', 'James'],
 'points': [26, 31, 22, 29]})

#combine first and last name column into new column, with space in between 
df['full_name'] = df['first'] + ' ' + df['last']

#view resulting dataFrame
df

 team first last  points full_name
0 Mavs Dirk Nowitzki 26 Dirk Nowitzki
1 Lakers Kobe Bryant  31 Kobe Bryant
2 Spurs Tim Duncan  22 Tim Duncan
3 Cavs Lebron James  29 Lebron James

Мы соединили столбцы имени и фамилии с пробелом между ними, но мы также могли бы использовать другой разделитель, например тире:

#combine first and last name column into new column, with dash in between 
df['full_name'] = df['first'] + ' - ' + df['last']

#view resulting dataFrame
df

 team first last  points full_name
0 Mavs Dirk Nowitzki 26 Dirk - Nowitzki
1 Lakers Kobe Bryant  31 Kobe - Bryant
2 Spurs Tim Duncan  22 Tim - Duncan
3 Cavs Lebron James  29 Lebron - James

Пример 2. Преобразование в текст и объединение двух столбцов

В следующем коде показано, как преобразовать один столбец в текст, а затем соединить его с другим столбцом:

import pandas as pd

#create dataFrame
df = pd.DataFrame({'team': ['Mavs', 'Lakers', 'Spurs', 'Cavs'],
 'first': ['Dirk', 'Kobe', 'Tim', 'Lebron'],
 'last': ['Nowitzki', 'Bryant', 'Duncan', 'James'],
 'points': [26, 31, 22, 29]})

#convert points to text, then join to last name column 
df['name_points'] = df['last'] + df['points'].astype ( str )

#view resulting dataFrame
df

 team first last  points name_points
0 Mavs Dirk Nowitzki 26 Nowitzki26
1 Lakers Kobe Bryant  31 Bryant31
2 Spurs Tim Duncan  22 Duncan22
3 Cavs Lebron James  29 James29

Пример 3: объединение более двух столбцов

Следующий код показывает, как объединить несколько столбцов в один столбец:

import pandas as pd

#create dataFrame
df = pd.DataFrame({'team': ['Mavs', 'Lakers', 'Spurs', 'Cavs'],
 'first': ['Dirk', 'Kobe', 'Tim', 'Lebron'],
 'last': ['Nowitzki', 'Bryant', 'Duncan', 'James'],
 'points': [26, 31, 22, 29]})

#join team, first name, and last name into one column
df['team_and_name'] = df[['team', 'first', 'last']]. agg(''. join , axis= 1 )

#view resulting dataFrame
df

 team first last points team_name
0 Mavs Dirk Nowitzki 26 Mavs Dirk Nowitzki
1 Lakers Kobe Bryant 31 Lakers Kobe Bryant
2 Spurs Tim Duncan 22 Spurs Tim Duncan
3 Cavs Lebron James 29 Cavs Lebron James

Дополнительные ресурсы

Pandas: как найти разницу между двумя столбцами
Pandas: как найти разницу между двумя строками
Pandas: как сортировать столбцы по имени