python3 解决"Unknown column 'nan' in 'field list'" 的问题

使用pandas过程中,读取数据转化成DataFrame格式会将缺失值会用NAN填充, 如果直接将数据用pymysql写入数据库会报错,

pymysql.err.InternalError: (1054, "Unknown column 'nan' in 'field list'")

 

此时需要将NAN替换成None , 因为None插入数据库会被填写Null  也就是数据库中的空值 

 

ini_df = pd.read_csv(mFilePath)
print(ini_df[ini_df.isnull().T.any()]) #找出有空值的行
# 这里是将NaN替换为None
# ini_df是你要插入数据库的DataFrame,  df是将NAN替换完为None的DataFrame
df = ini_df.astype(object).where(pd.notnull(ini_df), None)

1、找出含有空值的行

方法:DataFrame[DataFrame.isnull().T.any()]

其中,isnull()能够判断数据中元素是否为空值;T为转置;any()判断该行是否有空值。

2、为什么加转置

在代码中,isnull()的结果需要求转置之后,才能进行any()操作,这是为什么呢?

下面对比一下isnull转置和非转置的情况:

print(data.isnull().any())
print("========================")
print(data.isnull().T.any())

 

非转置:data.isnull().any(),得到的每一列求any()计算的结果,输出为列的Series。

转置:data.isnull().T.any(),得到的每一行求any()计算的结果,输出为行的Series。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值