Python 使用NaN填充不对齐索引 问题

Python 使用NaN填充不对齐索引 问题,python,pandas,Python,Pandas,我连接了两个int类型的系列,得到的数据帧是float类型。这是因为序列的索引未对齐,并且当发生串联时,pandas用NaN填充间隙。然而,NaN被认为是一个浮点数,不幸的是,它将我所有的整数都转换为浮点数 问题: 我的问题是,如何用其他不会将整数转换为浮点的东西来填补空白 MCV 印刷品: s1 type: int64 | s2 type: int64 0 1 A 1.0 NaN B NaN 1.0 0 float64 1 float64 dtype:

我连接了两个int类型的系列,得到的数据帧是float类型。这是因为序列的索引未对齐,并且当发生串联时,pandas用NaN填充间隙。然而,NaN被认为是一个浮点数,不幸的是,它将我所有的整数都转换为浮点数

问题: 我的问题是,如何用其他不会将整数转换为浮点的东西来填补空白

MCV 印刷品:

s1 type: int64 | s2 type: int64

     0    1
A  1.0  NaN
B  NaN  1.0 

0    float64
1    float64
dtype: object

首先,
dtype
转换是由于
NaN
不能用整数表示,因此选择了
float
dtype

第二,当这种情况发生时,这就变成了个人的选择,而这取决于你,没有正确的选择

例如,我们可以将
fillna
与任意值一起使用,例如
0
-1
,然后我们可以使用
astype(int)
将类型强制转换回:

但这可能不是您想要的,您可能会决定使用
dropna
删除这些行,但这可能意味着您丢失了有价值的信息,如果您正在进行某种机器学习或其他分析,这些信息可能是至关重要的


因此,您可以决定将这些列/行设置为最小值/最大值/平均值或中值,但如果列值与其他列存在依赖关系,则这可能会产生严重后果,例如,我们将所有缺失值设置为最小值/最大值,但该值会使预测模型在丢失时产生偏差,因为如果有大量缺失值,则您的数据会偏向最小值/最大值。就个人而言,在这些情况下,我发现这意味着工作正常。

这是个人的选择,因为您希望
0
或者
-1
或者其他什么,在这之后你可以在
fillna
之后执行
df.astype(int)
但是你知道
NaN
不能用整数表示,所以你必须决定你想要什么,你知道,如果我试图回答这个问题,我看到你在评论中给出了一个非常有效的答案,我会不愿意给出一个过于相似的答案。这是我的天性,我认为有些人和我有相同的特点。。。长的评论没有那么长,请重复你刚才在评论中写的内容作为回答,这样我就可以接受。我没有这个问题,因为它不重要,所以请随意做。我只会把答案贴在自己身上,让别人看得清楚,不得分,并在上面涂上你的名字;-)。我喜欢积分和所有东西,但适当的积分对我来说非常重要。只要你提到积分,我就不认为有问题,就个人而言,这不是问题,有些人可能会有意或无意地这样做。我不在乎积分,不在乎钱或食物
s1 type: int64 | s2 type: int64

     0    1
A  1.0  NaN
B  NaN  1.0 

0    float64
1    float64
dtype: object
In [21]:
df.fillna(0).astype(int)

Out[21]:
   0  1
A  1  0
B  0  1