您好,登錄后才能下訂單哦!
在人工采集數據時,經常有可能把空值和空格混在一起,一般也注意不到在本來為空的單元格里加入了空格。這就給做數據處理的人帶來了麻煩,因為空值和空格都是代表的無數據,而pandas中Series的方法notnull()會把有空格的數據也納入進來,這樣就不能完整地得到我們想要的數據了,這里給出一個簡單的方法處理該問題。
方法1:
既然我們認為空值和空格都代表無數據,那么可以先得到這兩種情況下的布爾數組。
這里,我們的DataFrame類型的數據集為df,其中有一個變量VIN,那么取得空值和空格的布爾數組為NONE_VIN。然后通過該布爾數組,就能得到我們要的數據了
NONE_VIN = (df["VIN"].isnull()) | (df["VIN"].apply(lambda x: str(x).isspace())) df_null = df[NONE_VIN] df_not_null = df[~NONE_VIN]
方法2:
直接使用Series的.apply方法來修改變量VIN中的每個值。如果發現是空格,就返回Nan,否則就返回原值。
df["VIN"]=df["VIN"].apply(lambda x: np.NaN if str(x).isspace() else x) df_null = df[df["VIN"].isnull()] df_not_null = df[df["VIN"].notnull()]
將dataframe中的NaN替換成希望的值
import pandas as pd df1 = pd.DataFrame([{'col1':'a', 'col2':1}, {'col1':'b', 'col2':2}]) df2 = pd.DataFrame([{'col1':'a', 'col3':11}, {'col1':'c', 'col3':33}]) data = pd.merge(left=df1, right=df2, how='left', left_on='col1', right_on='col1') print data # 將NaN替換為None print data.where(data.notnull(), None)
輸出結果:
col1 col2 col3 0 a 1 11 1 b 2 NaN col1 col2 col3 0 a 1 11 1 b 2 None
總結:
方法1的思路就是直接判定是否為空格,把空格納入到選擇中來。方法2的思路是先把空格轉換為NaN,然后正常使用.isnull()或.notnull()來得到我們想要的數據。
以上這篇python pandas消除空值和空格以及 Nan數據替換方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。