Python用空引号而不是单引号替换包含数值的字段的NaN值,这些值稍后将被视为字符串

Python用空引号而不是单引号替换包含数值的字段的NaN值,这些值稍后将被视为字符串,python,pandas,python-applymap,Python,Pandas,Python Applymap,我正在将一些数据帧上传到雪花云中。我必须使用以下方法将所有字段值转换为字符串: data = data.applymap(str) 我这样做的唯一原因是,如果没有它,我将得到以下错误: TypeError:在字符串格式化过程中并非所有参数都已转换 原因是有些字段包含数值,但并非所有行都包含数值,其中有些行使用“NA”。对于数据完整性,我们不能用0s替换它们,因为在我们的域中,0可能看起来有些什么,在我们的工作中,blank与0的值不同 一开始,我试图用单引号将NAa与'关联起来,但随后,所有有

我正在将一些数据帧上传到雪花云中。我必须使用以下方法将所有字段值转换为字符串:

data = data.applymap(str)
我这样做的唯一原因是,如果没有它,我将得到以下错误:

TypeError:在字符串格式化过程中并非所有参数都已转换

原因是有些字段包含数值,但并非所有行都包含数值,其中有些行使用“NA”。对于数据完整性,我们不能用
0
s替换它们,因为在我们的域中,
0
可能看起来有些什么,在我们的工作中,blank与
0
的值不同

一开始,我试图用单引号将
NA
a与
'
关联起来,但随后,所有有数字的字段都被转换为float。因此,如果一个值是123,它将是
123.0

如何将数值字段中的
NA
值替换为完全空白而不是
'
,以便该字段仍然可以被视为类型
INT

在下图中,我不希望将空单元格视为字符串,因为如果其他字段为int,则将使用applymap()将其转换为浮点数:


使用
np.isnan()
检测nan,并仅将非nan数字放入
str()

如果不需要浮点类型的整数,只需将映射从
str()
更改为
str(int())

数据 请注意,列B包含,因此其
dtype
自动浮动

df = pd.DataFrame({"A": [1 ,2], "B":[3, np.nan]})

print(df)
   A    B
0  1  3.0
1  2  NaN
密码
。如果我有一个带浮点数的列呢?这段代码处理浮点数列。有什么问题吗?我想把float保持为float,int保持为int,这是不明确的。1.0应该转换为1还是保留为1.0?请在您的帖子中更新这些信息。并提供包含这些角点的典型输入和预期输出数据,以便于清晰。Bill,1.0应保持1.0和1仍然为1。主要问题是,当应用映射检测到NaN值或空白时,它将整个列转换为字符串。
import numpy as np
df.applymap(lambda el: "" if np.isnan(el) else str(el))

Out[12]: 
   A    B
0  1  3.0
1  2