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。

你可能感兴趣的:(python)