为什么即使将数据类型定义为int,数据框仍会导致python pandas浮动

时间:2018-12-19 12:18:57

标签: python pandas dataframe types series

这是使用系列创建数据框的熊猫代码:

import pandas as pd

d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c'],dtype=int),
      'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'],dtype=int)}

df = pd.DataFrame(d)
print (df ['one'])

结果是:

a     1.0
b     2.0
c     3.0
d     NaN

名称:一个,dtype:float64

为什么结果中的数据类型为float,而两个系列的定义dtype为int

1 个答案:

答案 0 :(得分:0)

您的一个序列比另一个序列短,因此缺失的数据由NaN表示。现在,由于NaN为

type(np.nan)
float

该列中的所有其他整数也被上浮以进行浮动(这是出于性能考虑的默认行为)。

一种选择是使用object允许混合类型共存,尽管我不建议这样做。

d['one'] = d['one'].astype(object)
df = pd.DataFrame(d)
df

   one  two
a    1    1
b    2    2
c    3    3
d  NaN    4