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

Python

в рrbindФункция, сокращенно от _row-bind_, может использоваться для группировки фреймов данных по количеству их строк.

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

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

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

Пример 1: Использование rbind в Python с одинаковым количеством столбцов

Предположим, у нас есть следующие два кадра данных pandas.

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': ['F', 'G', 'H', 'I', 'J'],
                    'rebounds': [91, 88, 85, 87, 95]})

print(df2)

  team  points
0    F      91
1    G      88
2    H      85
3    I      87
4    J      95

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

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

#view resulting DataFrame
df3

	team	points
0	A	99
1	B	91
2	C	104
3	D	88
4	E	108
0	F	91
1	G	88
2	H	85
3	I	87
4	J	95

Обратите внимание, что мы также можем использовать **reset_index()** для сброса значения индекса нового DataFrame.

#row-bind two DataFrames and reset index values
df3 = pd.concat([df1, df2]).reset_index(drop=True)

#view resulting DataFrame
df3

	team	points
0	A	99
1	B	91
2	C	104
3	D	88
4	E	108
5	F	91
6	G	88
7	H	85
8	I	87
9	J	95

Пример 2: rbind с неравными столбцами в Python

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

import pandas as pd

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

df2 = pd.DataFrame({'team': ['F', 'G', 'H', 'I', 'J'],
                    'points': [91, 88, 85, 87, 95],
                    'rebounds': [24, 27, 27, 30, 35]})

#row-bind two DataFrames
df3 = pd.concat([df1, df2]).reset_index(drop=True)

#view resulting DataFrame
df3

	team	points	rebounds
0	A	99	NaN
1	B	91	NaN
2	C	104	NaN
3	D	88	NaN
4	E	108	NaN
5	F	91	24.0
6	G	88	27.0
7	H	85	27.0
8	I	87	30.0
9	J	95	35.0