Функция 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