Pandas: как разделить DataFrame по значению столбца


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

#define value to split on
x = 20

#define df1 as DataFrame where 'column_name' is >= 20
df1 = df[df['column_name'] >= x]

#define df2 as DataFrame where 'column_name' is < 20
df2 = df[df['column_name'] < x]

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

Пример: разделение Pandas DataFrame по значению столбца

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

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'],
 'points': [22, 24, 19, 18, 14, 29, 31, 16],
 'rebounds': [11, 8, 10, 6, 6, 5, 9, 12]})

#view DataFrame
print(df)

 team points rebounds
0 A 22 11
1 B 24 8
2 C 19 10
3 D 18 6
4 E 14 6
5 F 29 5
6 G 31 9
7 H 16 12

Мы можем использовать следующий код, чтобы разделить DataFrame на два DataFrame, где первый содержит строки, где «точки» больше или равны 20, а второй содержит строки, где «точки» меньше 20:

#define value to split on
x = 20

#define df1 as DataFrame where 'points' is >= 20
df1 = df[df['points'] >= x]

print(df1)

 team points rebounds
0 A 22 11
1 B 24 8
5 F 29 5
6 G 31 9

#define df2 as DataFrame where 'points' is < 20
df2 = df[df['points'] < x]

print(df2)

 team points rebounds
2 C 19 10
3 D 18 6
4 E 14 6
7 H 16 12

Обратите внимание, что мы также можем использовать функцию reset_index() для сброса значений индекса для каждого результирующего DataFrame:

#define value to split on
x = 20

#define df1 as DataFrame where 'points' is >= 20
df1 = df[df['points'] >= x]. reset_index(drop= True )

print(df1)

 team points rebounds
0 A 22 11
1 B 24 8
2 F 29 5
3 G 31 9

#define df2 as DataFrame where 'points' is < 20
df2 = df[df['points'] < x]. reset_index(drop= True )

print(df2)

 team points rebounds
0 C 19 10
1 D 18 6
2 E 14 6
3 H 16 12

Обратите внимание, что индекс для каждого результирующего DataFrame теперь начинается с 0.

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

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

Как исправить KeyError в Pandas
Как исправить: ValueError: невозможно преобразовать число с плавающей запятой NaN в целое число
Как исправить: ValueError: операнды не могли транслироваться вместе с фигурами