python_DataFrame之loc和iloc之间的区别

解决为什么直接用下标来替换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,这样我们再来看的话就没有之前的提示报错了,而且也达到了我们的目的(即

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: pandasDataFrame对象有两个方法lociloc,用于选择数据。 loc方法使用标签来选择数据,iloc方法使用整数位置来选择数据。 例如,df.loc[2,'column']表示选择第2行和'column'列的数据,而df.iloc[2,3]表示选择第3行和第4列的数据。 这两个方法都可以使用切片来选择多行或多列的数据。例如,df.loc[2:5,'column1':'column3']表示选择第2到第5行和'column1'到'column3'列的数据。 ### 回答2: PythonDataFrame是Pandas库的一个重要数据结构,用于处理和分析具有不同类型的数据。 DataFramelociloc都用于从DataFrame选择特定行和列。 loc是基于行和列的标签进行选择。使用loc,我们可以传入行和列的标签,以选择特定的数据。 例如,假设我们有一个DataFrame df,其包含三列 A、B、C 和五行数据。我们可以使用以下语法选择数据: ``` df.loc[行标签, 列标签] ``` 其,行标签和列标签可以是具体的数值、列表、切片或布尔索引。 iloc是基于行和列的索引进行选择。使用iloc,我们可以传入行和列的索引位置,以选择特定的数据。 例如,假设我们有一个DataFrame df,其包含三列 A、B、C 和五行数据。我们可以使用以下语法选择数据: ``` df.iloc[行索引, 列索引] ``` 其,行索引和列索引可以是具体的数值、列表、切片或布尔索引。 需要注意的是,行和列的索引从0开始计数。 总结起来,lociloc都是用于从DataFrame选择特定行和列的方法。loc是基于标签进行选择,而iloc是基于索引进行选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值