Pandas: วิธีแทนที่ nan ด้วย none


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

 df = df. replace (np. nan , None )

ฟังก์ชันนี้มีประโยชน์อย่างยิ่งเมื่อคุณต้องการส่งออก DataFrame ของ pandas ไปยังฐานข้อมูลที่ใช้ None เพื่อแสดงค่าที่หายไปแทนที่จะเป็น NaN

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

ตัวอย่าง: แทนที่ NaN ด้วย None ใน Pandas

สมมติว่าเรามี DataFrame แพนด้าดังต่อไปนี้:

 import pandas as pd
import numpy as np

#createDataFrame
df = pd. DataFrame ({' A ': [5, 6, 8, np.nan, 4, 15, 13],
                   ' B ': [np.nan, 12, np.nan, 10, 23, 6, 4],
                   ' C ': [2, 7, 6, 3, 2, 4, np.nan],
                   ' D ': [5, np.nan, 6, 15, 1, np.nan, 4]})

#view DataFrame
print (df)

      ABCD
0 5.0 NaN 2.0 5.0
1 6.0 12.0 7.0 NaN
2 8.0 NaN 6.0 6.0
3 NaN 10.0 3.0 15.0
4 4.0 23.0 2.0 1.0
5 15.0 6.0 4.0 NaN
6 13.0 4.0 NaN 4.0

โปรดทราบว่ามีค่า NaN หลายค่าใน DataFrame

หากต้องการแทนที่ค่า NaN แต่ละค่าด้วย None เราสามารถใช้ไวยากรณ์ต่อไปนี้:

 #replace all NaN values with None
df = df. replace (np. nan , None )

#view updated DataFrame
print (df)

      ABCD
0 5.0 None 2.0 5.0
1 6.0 12.0 7.0 None
2 8.0 None 6.0 6.0
3 None 10.0 3.0 15.0
4 4.0 23.0 2.0 1.0
5 15.0 6.0 4.0 None
6 13.0 4.0 None 4.0

โปรดทราบว่าแต่ละ NaN ในแต่ละคอลัมน์ของ DataFrame จะถูกแทนที่ด้วย None

โปรดทราบว่าหากคุณต้องการแทนที่เฉพาะค่า NaN ด้วย ไม่มี ในคอลัมน์ใดคอลัมน์หนึ่ง คุณสามารถใช้ไวยากรณ์ต่อไปนี้:

 #replace NaN values with None in column 'B' only
df[' B '] = df[' B ']. replace (np. nan , None )

#view updated DataFrame
print (df)

      ABCD
0 5.0 None 2.0 5.0
1 6.0 12.0 7.0 NaN
2 8.0 None 6.0 6.0
3 NaN 10.0 3.0 15.0
4 4.0 23.0 2.0 1.0
5 15.0 6.0 4.0 NaN
6 13.0 4.0 NaN 4.0

โปรดทราบว่าค่า NaN ได้ถูกเปลี่ยนเป็น ไม่มี ในคอลัมน์ “B” เท่านั้น

ที่เกี่ยวข้อง: วิธีแทนที่ค่า NaN ด้วยศูนย์ใน Pandas

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการทั่วไปอื่น ๆ ในแพนด้า:

วิธีแทนที่ค่าเฉพาะใน Pandas
วิธีกรอง Pandas DataFrame ตามค่าคอลัมน์
วิธีกรอกค่า NA ให้กับหลายคอลัมน์ใน Pandas

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

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