Pandas: cara mengganti nilai pada kolom berdasarkan kondisi


Anda dapat menggunakan sintaks dasar berikut untuk mengganti nilai di kolom pandas DataFrame berdasarkan kondisi:

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

Contoh berikut menunjukkan cara menggunakan sintaksis ini dalam praktiknya.

Contoh 1: Ganti nilai pada kolom berdasarkan suatu kondisi

Misalkan kita memiliki panda DataFrame berikut:

 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       

Kita dapat menggunakan kode berikut untuk mengganti setiap nilai pada kolom “poin” yang lebih besar dari 10 dengan nilai 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

Perhatikan bahwa masing-masing dari tiga nilai pada kolom “poin” yang lebih besar dari 10 telah diganti dengan nilai 20.

Contoh 2: Ganti nilai dalam kolom berdasarkan beberapa kondisi

Misalkan kita memiliki panda DataFrame berikut:

 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       

Kita dapat menggunakan kode berikut untuk mengganti setiap nilai di kolom “posisi” yang poinnya kurang dari 10 atau assistnya kurang dari 5 dengan string “Buruk”:

 #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

Demikian pula, kita dapat menggunakan kode berikut untuk mengganti setiap nilai di kolom “posisi” yang poinnya kurang dari 10 dan lintasannya kurang dari 5 dengan string “Buruk”:

 #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

Perhatikan bahwa dua baris di mana poin kurang dari 10 dan assist kurang dari 5 memiliki nilai “posisi” diganti dengan string “Buruk”.

Sumber daya tambahan

Tutorial berikut menjelaskan cara melakukan operasi umum lainnya di panda:

Cara memilih baris berdasarkan beberapa kondisi di Pandas
Cara membuat kolom baru berdasarkan kondisi di Pandas
Cara memfilter Pandas DataFrame pada berbagai kondisi

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *