2017-02-15 200 views
0

我想用空值替換NaN值,將它寫入mysql數據庫。我不想丟掉(df.dropna())整行,也不會用df.fillna(0)替換爲0。當使用df.fillna('')df.fillna('NULL')給出錯誤信息:熊貓Dataframe NaN值被替換爲無值

(mysql.connector.errors.DatabaseError)1265(01000):數據在列截斷 列 'log_return'

在所述的數據數據框如下所示:

  date  price  log_return     
0 2017-02-14  105.800 -0.006125       
1 2017-02-13  106.450 0.004236 
2 2017-02-10  106.000 NaN   

我想是這樣的:

  date  price  log_return     
0 2017-02-14  105.800 -0.006125       
1 2017-02-13  106.450 0.004236 
2 2017-02-10  106.000 
+0

你想如何在MYSQL中表示數據? – putonspectacles

回答

2

試試這個:

df.where(pd.notnull(df), None)

例如

df = pd.DataFrame(np.eye(3)) 
df = df.where(lambda x: x==1, np.nan) 
df = df.where(pd.notnull(df), None) 

注意pd.fillna(無)將無法正常工作,它離開NaN值不變。

消息來源https://github.com/pandas-dev/pandas/issues/1972

+0

非常感謝。不知道與'無'這是可能的:)。 – MCM

+0

我很驚訝地發現pd.fillna(None)不起作用。這是在鏈接中討論的,但由於它安靜地失敗了,並且沒有直接在問題或答案中提及,因此添加註釋可能會有所幫助,而不是嘗試回答問題。 –

+0

@BryanS謝謝你的答案。 – putonspectacles