为了账号安全,请及时绑定邮箱和手机立即绑定

我需要更改 pandas 数据框中几列的类型。无法使用 iloc 执行此操作

我需要更改 pandas 数据框中几列的类型。无法使用 iloc 执行此操作

慕姐8265434 2023-08-22 10:25:58
在大约有 40 多列的数据框中,我尝试使用 iloc 将前 27 列的数据类型从 float 更改为 int:df1.iloc[:,0:27]=df1.iloc[:,0:27].astype('int')但是,它不起作用。我没有收到任何错误,但 dtype 也没有改变。它仍然保持浮动。现在是最奇怪的部分:如果我首先仅更改第一列的数据类型(如下所示):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


查看完整回答
反对 回复 2023-08-22
?
神不在的星期二

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()


查看完整回答
反对 回复 2023-08-22
  • 2 回答
  • 0 关注
  • 145 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信