Pandas Dataframe NaN值替换为无值

时间:2017-02-15 16:53:07

标签: python mysql pandas dataframe sqlalchemy

我想用空值替换NaN值,将其写入mysql数据库。我不想删除(df.dropna())整行,也不想使用df.fillna(0)将其替换为0。使用df.fillna('')df.fillna('NULL')时会显示错误消息:

  

(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   

1 个答案:

答案 0 :(得分: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(None)不起作用,它会保持NaN值不受影响。

来源https://github.com/pandas-dev/pandas/issues/1972