วิธีเลือกแถวที่ไม่มีค่า nan ใน pandas
คุณสามารถใช้วิธีการต่อไปนี้เพื่อเลือกแถวที่ไม่มีค่า NaN ในแพนด้า:
วิธีที่ 1: เลือกแถวที่ไม่มีค่า NaN ในทุกคอลัมน์
df[~df. isnull (). any (axis= 1 )]
วิธีที่ 2: เลือกแถวที่ไม่มีค่า NaN ในคอลัมน์เฉพาะ
df[~df[' this_column ']. isna ()]
ตัวอย่างต่อไปนี้แสดงวิธีการใช้แต่ละวิธีในทางปฏิบัติกับ Pandas DataFrame ต่อไปนี้:
import pandas as pd import numpy as np #createDataFrame df = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E', 'F', 'G'], ' points ': [np.nan, 12, 15, 25, np.nan, 22, 30], ' assists ': [4, np.nan, 5, 9, 12, 14, 10]}) #view DataFrame print (df) team points assists 0 A NaN 4.0 1 B 12.0 NaN 2C 15.0 5.0 3D 25.0 9.0 4 E NaN 12.0 5F 22.0 14.0 6G 30.0 10.0
ตัวอย่างที่ 1: เลือกแถวที่ไม่มีค่า NaN ในทุกคอลัมน์
เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อเลือกแถวที่ไม่มีค่า NaN ในแต่ละคอลัมน์ของ DataFrame:
#create new DataFrame that only contains rows without NaNs no_nans = df[~df. isnull (). any (axis= 1 )] #view results print (no_nans) team points assists 2C 15.0 5.0 3D 25.0 9.0 5F 22.0 14.0 6G 30.0 10.0
โปรดทราบว่าแต่ละแถวของ DataFrame ที่เป็นผลลัพธ์ไม่มีค่า NaN ใด ๆ ในคอลัมน์ใด ๆ
ตัวอย่างที่ 2: เลือกแถวที่ไม่มีค่า NaN ในคอลัมน์เฉพาะ
เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อเลือกแถวที่ไม่มีค่า NaN ในคอลัมน์ จุด ของ DataFrame:
#create new DataFrame that only contains rows without NaNs in points column no_points_nans = df[~df[' points ']. isna ()] #view results print (no_points_nans) team points assists 1 B 12.0 NaN 2C 15.0 5.0 3D 25.0 9.0 5F 22.0 14.0 6G 30.0 10.0
โปรดทราบว่าแต่ละแถวของ DataFrame ที่เป็นผลลัพธ์ไม่มีค่า NaN ในคอลัมน์ จุด
มีแถวที่มีค่า NaN ในคอลัมน์ Assists แต่แถวนั้นยังคงอยู่ใน DataFrame เนื่องจากค่าในคอลัมน์ Points ของแถวนั้นไม่ใช่ NaN
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีการทำงานทั่วไปอื่นๆ ในแพนด้า:
Pandas: วิธีลบแถวที่มีค่า NaN
Pandas: วิธีแทนที่ค่า NaN ด้วยสตริง
Pandas: วิธีเติมค่า NaN ด้วยค่าเฉลี่ย