Pandas: วิธีแทนที่ค่าในคอลัมน์ตามเงื่อนไข


คุณสามารถใช้ไวยากรณ์พื้นฐานต่อไปนี้เพื่อแทนที่ค่าในคอลัมน์ของ Pandas DataFrame ตามเงื่อนไข:

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

ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวยากรณ์นี้ในทางปฏิบัติ

ตัวอย่างที่ 1: แทนที่ค่าในคอลัมน์ตามเงื่อนไข

สมมติว่าเรามี 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: แทนที่ค่าในคอลัมน์ตามเงื่อนไขหลายข้อ

สมมติว่าเรามี 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 DataFrame ในหลายเงื่อนไข

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *