2016-11-29 31 views

回答

7

考慮df

df = pd.DataFrame(np.random.rand(10, 10) * 10) 

enter image description here

使用np.r_得到slc

slc = np.r_[0:4, 6] 
df[slc] = df[slc].astype(int) 
df 

或傳遞的類型與鍵的字典列名

df.astype({c: int for c in slc}) 

​​3210

+0

我得到一個警告,當我嘗試使用任何應用或astype。 '__main __:4:SettingWithCopyWarning:' '試圖在來自DataFrame的切片的副本上設置一個值。 嘗試使用.loc [row_indexer,col_indexer] = value instead' –

+1

這是一個完全獨立的問題。它與創建'mapping2'的因素有關,因爲它是另一個數據框的'視圖'。在你分配給各個列之前,你可以通過執行'mapping2 = mapping2.copy()'來解決這個問題。 'mapping2 = mapping2.copy()'將使自己成爲一個新的新數據框,不附加到任何其他數據框,您可以自由地分配給它的列沒有任何警告。 – piRSquared

+0

謝謝@pirSquared。有用。另外,如果你可以解釋爲什麼'df [slc] .astype(int)'不能在'df [slc] = df [slc] .astype(int)'工作的地方工作,那就太好了。 –