【问题标题】:Pandas Dataframe NaN values replace by no valuesPandas Dataframe NaN 值替换为无值
【发布时间】:2017-07-04 11:22:05
【问题描述】:

我想用一个空值替换 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   

【问题讨论】:

  • 你希望数据在 MYSQL 中如何表示?

标签: python mysql pandas dataframe sqlalchemy


【解决方案1】:

试试这个:

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

【讨论】:

  • 非常感谢。不知道用“无”这是可能的:)。
  • 我很惊讶地得知 pd.fillna(None) 不起作用。链接中对此进行了讨论,但由于它悄悄地失败了,并且在问题或答案中都没有直接提及,因此添加注释而不是在答案中尝试它可能会有所帮助。
猜你喜欢
  • 2018-11-14
  • 2012-11-23
  • 2016-01-08
  • 2013-09-12
  • 2023-01-19
  • 2018-12-05
  • 1970-01-01
相关资源
最近更新 更多