python - 我需要更改熊猫数据框中几列的类型。不能使用 iloc 这样做
问题描述
在具有大约 40 多列的数据框中,我尝试使用 iloc 将前 27 列的 dtype 从 float 更改为 int:
df1.iloc[:,0:27]=df1.iloc[:,0:27].astype('int')
但是,它不起作用。我没有收到任何错误,但 dtype 也没有改变。它仍然保持浮动。
现在最奇怪的部分:
如果我首先仅更改第一列的 dtype(如下所示):
df1.iloc[:,0]=df1.iloc[:,0].astype('int')
然后运行前面的代码行:
df1.iloc[:,0:27]=df1.iloc[:,0:27].astype('int')
它按要求工作。任何有助于理解这一点和解决方案的帮助将不胜感激。
谢谢!
解决方案
我猜这是1.0.5
. 我在我的1.0.5
. 我和你有同样的问题。.loc
也有同样的问题,所以我猜熊猫开发者打破了iloc/loc
. 您需要更新到最新的 pandas 或使用解决方法。如果您需要解决方法,请按如下方式使用分配
df1[df1.columns[0:27]] = df1.iloc[:, 0:27].astype('int')
我测试了它。以上方式克服了这个错误。它将前 27 列转换为 dtypeint32
推荐阅读
- slack - 在线程中响应 Slack Action
- powershell - 如何生成三个不同的对象?
- python - 在列表列表中设置值失败
- typescript - 是否可以使用修改后的类型键生成类型?
- python - Python / Tkinter:如何避免“AttributeError:'Toplevel'对象没有属性'filenameA'”
- rust - 如何绕过可变和不可变引用?
- java - 使 HTML 锚链接在 Android Java 中启动一个新活动
- xcode - 二进制拒绝 Appstore
- apache-iotdb - 在 HDFS 中存储 TsFile 时,IoTDB 中的 Compaction Merge 发生 UnsupportedOperationException
- python - 有没有办法在 def 函数中使列表插入和列表弹出?