Вы можете использовать следующий базовый синтаксис для разделения кадра данных 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: операнды не могли транслироваться вместе с фигурами