2017-09-15 49 views
4

我開始學習python,numpy和panda的,我有一個非常基本的問題,關於大小。Python&Pandas - intp和int64之間的dp.Series區別

請參閱下一個代碼塊:

1.長度:6,D型細胞:int64類型

# create a Series from a dict 
pd.Series({key: value for key, value in zip('abcdef', range(6))}) 

2.長度:6,D型細胞:INT32

# but why does this generate a smaller integer size??? 
pd.Series(range(6), index=list('abcdef')) 

問題 所以我想當你在pd.Series中放置一個列表,numpy數組,字典等時,你會得到int64,但是當你在pd.Series中只放入範圍(6)時,你將得到int32。有人能讓我對此有點清楚嗎?

對不起,最基本的問題。

@Edit:我使用的是熊貓版本0.20.1和1.12.1 numpy的

+0

什麼是您的Python,numpy和操作系統版本? – EdChum

回答

4

他們在語義上的不同在第一個版本,你通過一個單一的標量值的字典所以D型變成int64 ,對於第二,傳遞一個range可trvially轉換爲numpy的陣列,這是int32

In[57]: 
np.array(range(6)).dtype 

Out[57]: dtype('int32') 

所以熊貓series的構造涉及D型匹配在第一個實例,沒有用於第二因爲它可以轉換成一個numpy陣列y和numpy的已確定int32最好在這種情況下

更新

它看起來這是依賴於你的numpy版本,也許pandas版本。 我正在運行python 3.6,numpy 1.12.1和pandas 0.20.3,我得到了上面的結果。我也運行Windows 7 64位

@jeremycg運行熊貓0.19.2numpy 1.11.2並遵守相同的結果,同時@coldspeed運行numpy 1.13.1和觀察int64

由此得知dtype將在很大程度上由numpy確定。

我相信這個line就是我們在這種情況下通過range時所謂的。

subarr = np.array(arr, dtype=object, copy=copy) 

返回的類型由numpy和OS確定的,在我的情況的窗口已經定義了C長爲32位。請參閱相關信息:numpy array dtype is coming as int32 by default in a windows 10 64 bit machine

+0

我得到了代碼輸出int64 dtype?它取決於熊貓版本 – Dark

+0

我使用'0.20.3' – EdChum

+0

'np.array(list(range(6)))。dtype'在我的機器中返回int64。 – Dark

相關問題