使用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。