为什么Pandas会自动将int64
转换为float64
?
我已经检查了这些问题:
- Involuntary conversion of int64 to float64 in pandas
- Unwanted automatic type conversion
- Pandas Dtypes : float64 to 'Object' Conversion
但据我所知,没有一个像我的情况那么简单。
我在木星实验室运行代码。
>>> df.dtypes
cd_fndo int64
dif float64
dtype: object
所以类型是int64
和float64
,但是应用恒等函数会导致类型改变:
>>> df.apply(lambda x: x, axis=1).dtypes
cd_fndo float64
dif float64
dtype: object
然而,当仅考虑第一列时,类型int64
保持相同:
>>> df.iloc[:, :1].apply(lambda x: x, axis=1).dtypes
cd_fndo int64
dtype: object
有人能解释一下这种类型变化的原因吗?
1条答案
按热度按时间1cklez4t1#
df.apply(lambda x: x, axis=1)
意味着lambdaMap到每一行。该行包含一个int和一个float,因此它被转换为float以容纳这两个元素。在第二个示例中,行只包含1个int,因此不需要转换。