pandas NaN to None

pandas的DataFrame取用数据十分便利,但是空值存储为NaN(np.nan),在json需转换为None进行数据传递,记录转换方法。

if version.parse(pd.__version__) >= version.parse('1.3.0'):
    df = df.replace({np.nan: None})
else:
    df = df.where(df.notnull(), None)

pandas版本高于1.3.0时,通过replace方法,置换NaN和None,replace是相互的,dataframe中的NaN会被转换为None,而其中的None会被转换为NaN。确保数据更改的一致性可以加一句:

df = df.fillna(np.nan)
df = df.replace({np.nan: None})

pandas版本低于1.3.0时,利用where方法,保留不为空的值,其他置为None。

df.where(cond, other),cond:保留项需满足的条件,other:不满足条件的用other值替换。

pandas1.3.0之后对where的other进行了调整,other的值必须是可调用的。这就很烦,之前写的代码,换个版本通通报错了,查了半天才发现函数变了。

你可能感兴趣的:(pandas,python)