在大約有 40 多列的數據框中,我嘗試使用 iloc 將前 27 列的數據類型從 float 更改為 int:df1.iloc[:,0:27]=df1.iloc[:,0:27].astype('int')但是,它不起作用。我沒有收到任何錯誤,但 dtype 也沒有改變。它仍然保持浮動?,F在是最奇怪的部分:如果我首先僅更改第一列的數據類型(如下所示):df1.iloc[:,0]=df1.iloc[:,0].astype('int')然后運行前面的代碼行:df1.iloc[:,0:27]=df1.iloc[:,0:27].astype('int')它按要求工作。任何幫助理解這一點和解決方案的幫助將不勝感激。謝謝!
2 回答

湖上湖
TA貢獻2003條經驗 獲得超2個贊
我猜這是 中的一個錯誤1.0.5
。我在我的1.0.5
. 我有和你一樣的問題。也.loc
有同樣的問題,所以我猜 pandas 開發者破壞了iloc/loc
. 您需要更新到最新的 pandas 或使用解決方法。如果您需要解決方法,請使用分配,如下所示
df1[df1.columns[0:27]] = df1.iloc[:, 0:27].astype('int')
我測試過。以上方法克服了這個錯誤。它將前 27 列轉換為 dtypeint32

神不在的星期二
TA貢獻1963條經驗 獲得超6個贊
只是不要使用 iloc。您只需在 27 列上創建一個循環并將它們轉換為您想要的數據類型。
df.info()
my_columns = df.columns.to_list()[0:27]
for i in my_columns:
df[i] = df[i].astype('int32')
df.info()
添加回答
舉報
0/150
提交
取消