我试图写一个熊猫数据帧(或可以使用numpy数组)到mysql数据库使用MysqlDB。MysqlDB似乎不理解'nan',我的数据库抛出一个错误,说nan不在字段列表中。我需要找到一种方法将“nan”转换为NoneType。
什么好主意吗?
我试图写一个熊猫数据帧(或可以使用numpy数组)到mysql数据库使用MysqlDB。MysqlDB似乎不理解'nan',我的数据库抛出一个错误,说nan不在字段列表中。我需要找到一种方法将“nan”转换为NoneType。
什么好主意吗?
当前回答
在替换为where语句之前,将numpy NaN转换为pandas NA:
df = df.replace(np.NaN, pd.NA).where(df.notnull(), None)
其他回答
有时使用此代码更好。注意np指的是numpy:
df = df.fillna(np.nan).replace([np.nan], [None])
这招对我很管用:
df = df.fillna(0)
经过一番摸索,这招对我很管用:
df = df.astype(object).where(pd.notnull(df),None)
很老了,但我偶然发现了同样的问题。 试着这样做:
df['col_replaced'] = df['col_with_npnans'].apply(lambda x: None if np.isnan(x) else x)
令人惊讶的是,之前的答案都不适合我,所以我不得不对每一列都这样做。
for column in df.columns:
df[column] = df[column].where(pd.notnull(df[column]), None)