我的DataFrame中的一些列有<NA>
的实例,其类型为pandas._libs.missing.NAType
。
我想用np.nan
代替NaN
。
在使用pd.read_csv()
时,我看到<NA>
的实例可以被替换的问题。
但是因为我的Pandas DataFrame是从Spark DataFrame创建的,所以我不使用pd.read_csv()
函数。
请建议。
我对replace
解决方案没有任何运气,但能够将<NA>
转换为np。通过将列转换为float -df['my_col'].astype(float)
.
使用replace
,也是升级熊猫的必要条件。
df = pd.DataFrame({'age':[pd.NA, 4, 8]})
df = df.replace(pd.NA, np.nan)
print (df)
age
0 NaN
1 4.0
2 8.0
使用Pandas v1.3.1
和Numpy v1.20.3
,您可以使用df.where()
,当条件为False
时,如以下所示:
$> df = pd.DataFrame({'age':[pd.NA, 4, 8]})
$> print(df)
age
0 <NA>
1 4
2 8
$> print(type(df.iloc[0]['age']))
pandas._libs.missing.NAType
$> df = df.where(pd.notnull(df), np.nan) # Replace pd.NA, np.nan and None by np.nan
$> print(df)
age
0 NaN
1 4
2 8
$> print(type(df.iloc[0]['age']))
float
PS:你也这样做:
$> df = df.where(~pd.isna(df), np.nan)