python_DataFrame之loc和iloc之间的区别

本文介绍了在Python中使用DataFrame时,loc和iloc用于赋值的区别。通过实例说明了直接使用下标可能导致的Object类型问题,以及解决该问题的方法——使用loc。文章解释了chained indexing导致的SettingWithCopyWarning警告,并建议使用DataFrame.loc[行名, 列名] = 值的方式避免警告和类型错误。" 106675863,9598664,深入理解VBA:自动化办公解决方案,"['VBA', '宏', '自动化办公', 'Excel VBA', 'Office编程']
摘要由CSDN通过智能技术生成

解决为什么直接用下标来替换DataFrame里面的值时所属类型是Object而不是Int:
问题描述:
上课时我们判断“体育”列中的数据是否均为int格式,如果不是int类型的话我们应该用0去替换不是int格式的值,当我们直接用下标,即用以下方法实现时:

然后我们使用df1.体育输出结果时,我们可以看到下图中虽然把体育这一列中的“作弊”换成了我们想要替换的0,但是当我们看它的数据类型时我们会发现是Object而不是Int类型的;

解决过程:
1.在上面的代码块执行完成后,我们不执行df1.体育输出结果时,我们就会看到会有报错,报错内容如下图:

所以我就觉得问题会出现在这里,我们可以根据提示的内容进入到提示网页里面,查找到SettingWithCopyWarning有关的内容,地址:https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
这里提到一个关键词那就是chained indexing(链接索引):这就是出现警告的原因, 我们在使用pandas中要极力避免出现chained index;
它里面还有一个例子,我们就用我们上课时的这个例子和大家讨论一下什么是chained indexing(链接索引)吧!
2.当我看了这篇提示网页之后,我把代码块中的df1[‘体育’][list(df1[‘体育’]).index(i)]=0替换为了df1.loc[list(df1[‘体育’]).index(i),‘体育’] = 0,这样我们再来看的话就没有之前的提示报错了,而且也达到了我们的目的(即

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值