Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将np.nan转换为pd.NA_Python_Pandas_Nan - Fatal编程技术网

Python 将np.nan转换为pd.NA

Python 将np.nan转换为pd.NA,python,pandas,nan,Python,Pandas,Nan,鉴于pd.DataFrame包含float,如何将np.nan转换为新的pd.NA格式 import numpy as np import pandas as pd df = pd.DataFrame(np.nan, index=[0, 1, 2, 3], columns=['A', 'B']) df.iloc[0, 1] = 1.5 df.iloc[3, 0] = 4.7 df = df.convert_dtypes() type(df.iloc[0, 0]) # numpy.floa

鉴于
pd.DataFrame
包含
float
,如何将
np.nan
转换为新的
pd.NA
格式

import numpy as np
import pandas as pd

df = pd.DataFrame(np.nan, index=[0, 1, 2, 3], columns=['A', 'B'])
df.iloc[0, 1] = 1.5
df.iloc[3, 0] = 4.7

df = df.convert_dtypes()

type(df.iloc[0, 0])  # numpy.float64 - I'am expecting pd.NA

df
包含
float
时,使用
pd.convert\u dtypes()
似乎不起作用。但是,当
df
包含
int

时,此转换工作正常。fillna是否适合您

import numpy as np
import pandas as pd

df = pd.DataFrame(np.nan, index=[0, 1, 2, 3], columns=['A', 'B'])
df.iloc[0, 1] = 1.5
df.iloc[3, 0] = 4.7

df = df.fillna(pd.NA)
df

输出:


convert\u dtypes
是您自己的函数吗?@Erfan不是,它来自pandas 1.0.0。我本以为我对pandas API了如指掌,但今天学到了一些新的东西,感谢它似乎
convert\u dtypes
有参数可以使用
pd.NA
支持转换字符串、整数和布尔值,但不是浮动。此解决方案的问题是,您的数据帧现在有
object
dtype列,这使它们变慢。使用此解决方案,您可以获得正确的
pd.NA
类型。但是,
df.info()
现在将显示您的列从
float64
更改为
object
。那不是我要找的。整个列应该变成
float64
@Andi,看起来该功能还不存在(还?)。您可以在pandas github repo上提出一个增强建议问题。速度是使用pd.NA的牺牲品。此解决方案解决了所提出的问题,因此应标记为一个问题,因为原始问题只希望使用pd.NA,而不考虑效率。此外,原始问题没有指定其他数据类型要求。
      A     B
0  <NA>   1.5
1  <NA>  <NA>
2  <NA>  <NA>
3   4.7  <NA>
type(df.iloc[0, 0]) 
pandas._libs.missing.NAType