Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.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 在数据帧中使用替换方法时显示浮点类型_Python_Pandas - Fatal编程技术网

Python 在数据帧中使用替换方法时显示浮点类型

Python 在数据帧中使用替换方法时显示浮点类型,python,pandas,Python,Pandas,这是我的小例子。 我想把nan从“无”改为“无”。所以我用了两次 第一个替换方法工作得很好,正如我所想,但nan在第二个替换中重生,并且由于nan,所有int都更改为float。我不知道为什么nan会重生为df.replace({'None':None},inplace=True),我如何修复它?我们可以做的是将它更改为对象 a b c 0 None None 3 1 None 5 6 2 7 8 9 a b c 0

这是我的小例子。 我想把nan从“无”改为“无”。所以我用了两次
第一个替换方法工作得很好,正如我所想,但nan在第二个替换中重生,并且由于nan,所有int都更改为float。我不知道为什么nan会重生为df.replace({'None':None},inplace=True),我如何修复它?

我们可以做的是将它更改为
对象

      a     b  c
0  None  None  3
1  None     5  6
2     7     8  9
     a    b  c
0  NaN  NaN  3
1  NaN  5.0  6
2  7.0  8.0  9

听起来您希望列类型是整数而不是浮点。您可以使用0.24.0版中引入的可为空的整数数据类型

对于一个为常规整数的列,如果它获得空值,则会自动将数据类型转换为浮点数据类型。请注意,如果使用pandas可为null的整数数据类型,该列将不会变为浮点,空值将表示为pandas.NA值


阅读。

中的更多信息,如果您希望在列中使用
nan
值的整数,则需要使用
pd.NA
nan
是一个浮点,将强制整数数组成为浮点。看看这本书

解决方案

df=pd.DataFrame(
[
[np.nan,无,3],
[np.nan,5,6],
[7, 8, 9]
], 
列=['a','b','c'],
)
#将np.nan替换为pd.NA
#然后将列类型转换为Int32
df.fillna(pd.NA).astype('Int32'))
Out[11]:
a、b、c
0      3
1       5  6
2     7     8  9

如果
df.replace({'None':np.nan},inplace=True)
?您需要可为空的int-dtype:
df.replace({'None':None})。astype(pd.Int64Dtype())
,我可以问一下为什么要使用None而不是nan吗?在大多数情况下,NaN是指示数据帧中缺少值的最佳方式。@wwnde它不起作用。@anky我最后只使用“Int64”。谢谢您的回复!通过您的回复,我知道可为空的整数类型。谢谢即使我不使用对象类型,你的回答也会教我变量的方法。谢谢
      a     b  c
0  None  None  3
1  None     5  6
2     7     8  9
     a    b  c
0  NaN  NaN  3
1  NaN  5.0  6
2  7.0  8.0  9
out = df.replace({'None': None}).astype(object)
Out[10]: 
     a    b  c
0  NaN  NaN  3
1  NaN    5  6
2    7    8  9
Out[11]:
      a     b  c
0  <NA>  <NA>  3
1  <NA>     5  6
2     7     8  9