Как использовать cbind в Python (эквивалентно R)


Функция cbind в R, сокращение от column-bind , может использоваться для объединения фреймов данных вместе по их столбцам.

Мы можем использовать функцию concat() из pandas для выполнения эквивалентной функции в Python:

df3 = pd.concat([df1, df2], axis= 1 )

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

Пример 1: Использование cbind в Python с одинаковыми значениями индекса

Предположим, у нас есть следующие два Pandas DataFrames:

import pandas as pd

#define DataFrames
df1 = pd.DataFrame({'team': ['A', 'B', 'C', 'D', 'E'],
 'points': [99, 91, 104, 88, 108]})

print(df1)

 team points
0 A 99
1 B 91
2 C 104
3 D 88
4 E 108

df2 = pd.DataFrame({'assists': ['A', 'B', 'C', 'D', 'E'],
 'rebounds': [22, 19, 25, 33, 29]})

print(df2)

 assists rebounds
0 A 22
1 B 19
2 C 25
3 D 33
4 E 29

Мы можем использовать функцию concat() , чтобы быстро связать эти два кадра данных вместе по их столбцам:

#column-bind two DataFrames into new DataFrame
df3 = pd.concat([df1, df2], axis= 1 )

#view resulting DataFrame
df3

 team points assists rebounds
0 A 99 A 22
1 B 91 B 19
2 C 104 C 25
3 D 88 D 33
4 E 108 E 29

Пример 2: Использование cbind в Python с неравными значениями индекса

Предположим, у нас есть следующие два Pandas DataFrames:

import pandas as pd

#define DataFrames
df1 = pd.DataFrame({'team': ['A', 'B', 'C', 'D', 'E'],
 'points': [99, 91, 104, 88, 108]})

print(df1)

 team points
0 A 99
1 B 91
2 C 104
3 D 88
4 E 108

df2 = pd.DataFrame({'assists': ['A', 'B', 'C', 'D', 'E'],
 'rebounds': [22, 19, 25, 33, 29]})

df2. index = [6, 7, 8, 9, 10]

print(df2)

 assists rebounds
6 A 22
7 B 19
8 C 25
9 D 33
10 E 29

Обратите внимание, что два DataFrames не имеют одинаковых значений индекса.

Если мы попытаемся использовать функцию concat () , чтобы связать их вместе, мы получим следующий результат:

#attempt to column-bind two DataFrames
df3 = pd.concat([df1, df2], axis= 1 )

#view resulting DataFrame
df3

 team points assists rebounds
0 A 99.0 NaN NaN
1 B 91.0 NaN NaN
2 C 104.0 NaN NaN
3 D 88.0 NaN NaN
4 E 108.0 NaN NaN
6 NaN NaN A 22.0
7 NaN NaN B 19.0
8 NaN NaN C 25.0
9 NaN NaN D 33.0
10 NaN NaN E 29.0

Это не тот результат, которого мы хотели.

Чтобы исправить это, нам нужно сначала сбросить индекс каждого DataFrame, прежде чем объединять их вместе:

import pandas as pd

#define DataFrames
df1 = pd.DataFrame({'team': ['A', 'B', 'C', 'D', 'E'],
 'points': [99, 91, 104, 88, 108]})

df2 = pd.DataFrame({'assists': ['A', 'B', 'C', 'D', 'E'],
 'rebounds': [22, 19, 25, 33, 29]})

df2. index = [6, 7, 8, 9, 10]

#reset index of each DataFrame
df1.reset_index(drop= True , inplace= True )
df2. reset_index(drop= True , inplace= True )

#column-bind two DataFrames
df3 = pd.concat([df1, df2], axis= 1 )

#view resulting DataFrame
df3

 team points assists rebounds
0 A 99 A 22
1 B 91 B 19
2 C 104 C 25
3 D 88 D 33
4 E 108 E 29

Обратите внимание, что этот DataFrame соответствует тому, который мы получили в предыдущем примере.

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

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

Как объединить два кадра данных Pandas в индексе
Как объединить Pandas DataFrames в несколько столбцов
Как выполнить ВПР в Pandas

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.