2014-02-26 109 views
6

我的問題是,添加行到數據幀改變D型細胞列組成:添加行到大熊貓數據幀改變D型細胞

>>> from pandas import DataFrame 
>>> df = DataFrame({'a' : range(10)}, dtype='i4') 
>>> df 
    a 
0 0 
1 1 
2 2 
3 3 
4 4 
5 5 
6 6 
7 7 
8 8 
9 9 

[10 rows x 1 columns] 

我特別指定D型細胞是INT32(即,「6-14」),如可可以看出:

>>> df.dtypes 
a int32 
dtype: object 

然而,加入了行更改d型到float64:

>>> df.loc[10] = 99 

>>> df 
    a 
0 0 
1 1 
2 2 
3 3 
4 4 
5 5 
6 6 
7 7 
8 8 
9 9 
10 99 

[11 rows x 1 columns] 

>>> df.dtypes 
a float64 
dtype: object 

我已經試過指定d我添加的值的類型:

>>> import numpy as np 
>>> df = DataFrame({'a' : np.arange(10, dtype=np.int32)}) 

>>> df.dtypes 
a int32 
dtype: object 

>>> df.loc[10] = np.int32(0) 

>>> df.dtypes 
a float64 
dtype: object 

但是這也行不通。有沒有解決方案,沒有使用返回新對象的函數?

回答

7

擴展分兩階段完成,首先將nan放置在該列中,然後分配它,這就是爲什麼它被強制。我會把它放在bug /增強列表上。它有點不平凡。

這是一個解決方法,使用append。

In [14]: df.append(Series(99,[10],dtype='i4').to_frame('a')) 
Out[14]: 
    a 
0 0 
1 1 
2 2 
3 3 
4 4 
5 5 
6 6 
7 7 
8 8 
9 9 
10 99 

[11 rows x 1 columns] 

In [15]: df.append(Series(99,[10],dtype='i4').to_frame('a')).dtypes 
Out[15]: 
a int32 
dtype: object 

的錯誤的一個問題/增強這樣做自動的:https://github.com/pydata/pandas/issues/6485

+1

對於任何人誰願意上爲什麼NaN被強迫它點顏色浮動:http://pandas.pydata.org/pandas -docs/stable/gotchas.html#support-for-integer-na (我被這個難住了) – fantabolous