这是使用系列创建数据框的熊猫代码:
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
答案 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