Problem
我连接了两个 int 类型系列,而我返回的数据帧是 float 类型。发生这种情况是因为该系列的索引未对齐,并且当发生串联时,pandas 用 NaN 填充空白。然而,NaN 被认为是浮点数,不幸的是,我的所有整数都随之转换为浮点数。
Question
我的问题是,如何用其他不会将整数转换为浮点数的东西来填补空白?
MCV
import pandas as pd
s1 = pd.Series([1], index=['A'])
s2 = pd.Series([1], index=['B'])
print "s1 type: {} | s2 type: {}\n".format(s1.dtype, s2.dtype)
df = pd.concat([s1, s2], axis=1)
print df, "\n"
print df.dtypes
Prints:
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
选择了数据类型。
其次,当这种情况发生时,这将成为个人选择,这取决于你,没有正确的选择。
例如我们可以使用fillna
具有任意值,例如0
or -1
然后我们可以使用astype(int)
:
In [21]:
df.fillna(0).astype(int)
Out[21]:
0 1
A 1 0
B 0 1
但这可能不是您想要的,您可能决定使用以下方法删除这些行dropna
但这可能意味着您会丢失有价值的信息,如果您正在进行某种机器学习或其他分析,这些信息可能至关重要。
因此,您可能决定将这些列/行设置为最小值/最大值/平均值或中值,但如果列值依赖于其他列,这可能会产生严重后果,例如我们将所有缺失值设置为最小值/max 但该值会在预测模型丢失时产生偏差熵/信息因为如果您有大量缺失值,那么您的数据就会偏向最小值/最大值。就我个人而言,在这些情况下,我发现 Mean 工作得很好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)