Pandas: як замінити значення в стовпці на основі умови


Ви можете використовувати такий базовий синтаксис, щоб замінити значення в стовпці pandas DataFrame на основі умови:

 #replace values in 'column1' that are greater than 10 with 20
df. loc [df[' column1 '] > 10, ' column1 '] = 20

Наступні приклади показують, як використовувати цей синтаксис на практиці.

Приклад 1: заміна значень у стовпці на основі умови

Припустімо, що у нас є наступні pandas DataFrame:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' position ': ['G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'],
                   ' points ': [5, 7, 7, 9, 12, 13, 9, 14],
                   ' assists ': [3, 8, 2, 6, 6, 5, 9, 5]})

#view DataFrame
df

	team position points assists
0 A G 5 3
1 A G 7 8
2 A F 7 2
3 A F 9 6
4 B G 12 6
5 B G 13 5
6 B F 9 9
7 B F 14 5       

Ми можемо використати наступний код, щоб замінити кожне значення в стовпці «points» більше 10 на значення 20:

 #replace any values in 'points' column greater than 10 with 20
df. loc [df[' points '] > 10, ' points '] = 20

#view updated DataFrame
df

	team position points assists
0 A G 5 3
1 A G 7 8
2 A F 7 2
3 A F 9 6
4 B G 20 6
5 B G 20 5
6 B F 9 9
7 B F 20 5

Зауважте, що кожне з трьох значень у стовпці «балів», більше 10, було замінено на значення 20.

Приклад 2: замініть значення в стовпці на основі кількох умов

Припустімо, що у нас є наступні pandas DataFrame:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' position ': ['G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'],
                   ' points ': [5, 7, 7, 9, 12, 13, 9, 14],
                   ' assists ': [3, 8, 2, 6, 6, 5, 9, 5]})

#view DataFrame
df

	team position points assists
0 A G 5 3
1 A G 7 8
2 A F 7 2
3 A F 9 6
4 B G 12 6
5 B G 13 5
6 B F 9 9
7 B F 14 5       

Ми можемо використовувати наступний код, щоб замінити кожне значення в стовпці «position», де очок менше 10 або передач менше 5, на рядок «Bad»:

 #replace string in 'position' column with 'bad' if points < 10 or assists < 5
df. loc [(df[' points '] < 10) | (df[' assists '] < 5), ' position '] = ' Bad '

#view updated DataFrame
df

        team position points assists
0 A Bad 5 3
1 A Bad 7 8
2 A Bad 7 2
3 A Bad 9 6
4 B G 20 6
5 B G 20 5
6 B Bad 9 9
7 B F 20 5

Подібним чином ми можемо використати наступний код, щоб замінити кожне значення в стовпці «position», де балів менше 10 і пропусків менше 5, на рядок «Bad»:

 #replace string in 'position' column with 'bad' if points < 10 and assists < 5
df. loc [(df[' points '] < 10) & (df[' assists '] < 5), ' position '] = ' Bad '

#view updated DataFrame
df

        team position points assists
0 A Bad 5 3
1 A G 7 8
2 A Bad 7 2
3 A F 9 6
4 B G 12 6
5 B G 13 5
6 B F 9 9
7 B F 14 5

Зауважте, що у двох рядках, де очок було менше 10 , а передач менше 5, значення «позиції» було замінено на рядок «Погано».

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові операції в pandas:

Як вибрати рядки на основі кількох умов у Pandas
Як створити новий стовпець на основі умови в Pandas
Як відфільтрувати Pandas DataFrame за кількома умовами

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *