d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
print df ['one']
输出:
a 1.0
b 2.0
c 3.0
d NaN
Name: one, dtype: float64
该值设置为float
d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
'two' : pd.Series([1, 2, 3], index=['a', 'b', 'c'])}
df = pd.DataFrame(d)
print df ['one']
输出:
a 1
b 2
c 3
Name: one, dtype: int64
但是现在该值设置为int64
。
区别是第一个,值中有一个NaN
。
以上示例中设置数据类型的规则是什么?
谢谢!
答案 0 :(得分:2)
答案 1 :(得分:2)
参考:
Numpy or Pandas, keeping array type as integer while having a nan value
如果您查看pandaDf['value'] = 1
column = ['col1', 'col2', 'col3']
pandaDf.pivot_table(index = 'id', value = 'value', columns = column)
,则可以看到type(df.iloc[3,0])
的类型为nan
,这将迫使整个列的类型强制转换为浮点型。基本上,Pandas处理可空整数是垃圾,您只需要将它们作为浮点数处理即可。如果您不关心性能,也可以使用对象类型保存整数。