loc()和 iclo()方法区别

解释

ilocloc 方法都用于按照行标签或列标签来进行索引操作,但它们有一些关键的区别。

  1. iloc 方法data.iloc[“行”:“列”]

    • iloc 是基于索引位置进行索引的,即它使用整数位置来选择数据。
    • 它接受整数、整数列表、整数切片、布尔数组等作为输入。
    • 当使用整数作为参数时,iloc 将按照整数位置来进行选择。这意味着它不考虑行或列的标签,而只考虑它们在 DataFrame 中的位置。
    • 例如,data.iloc[0] 将选择第一行,data.iloc[:, 0] 将选择第一列,data.iloc[1:3, :] 将选择第二行到第三行的数据等。
  2. loc 方法data.loc[“行”:“列”]

    • loc 是基于标签进行索引的,即它使用行标签或列标签来选择数据。
    • 它接受标签、标签列表、标签切片、布尔数组等作为输入。
    • 当使用标签作为参数时,loc 将按照标签来进行选择。这意味着它根据行或列的标签来选择数据。
    • 例如,data.loc[0] 将选择标签为 0 的行,data.loc[:, 'column_name'] 将选择名为 ‘column_name’ 的列,data.loc[1:3, :] 将选择标签为 1 到 3 的行等。

下面是一个更具体的示例,以说明 ilocloc 方法的区别:

示例一

假设我们有以下 DataFrame:

    A   B   C
0   1   4   7
1   2   5   8
2   3   6   9

使用 ilocloc 方法来选择数据:

# 使用 iloc 方法选择第一行
print(df.iloc[0])
# 输出:
# A    1
# B    4
# C    7
# Name: 0, dtype: int64

# 使用 loc 方法选择标签为 0 的行
print(df.loc[0])
# 输出:
# A    1
# B    4
# C    7
# Name: 0, dtype: int64

# 使用 iloc 方法选择第一列
print(df.iloc[:, 0])
# 输出:
# 0    1
# 1    2
# 2    3
# Name: A, dtype: int64

# 使用 loc 方法选择列标签为 'A' 的列
print(df.loc[:, 'A'])
# 输出:
# 0    1
# 1    2
# 2    3
# Name: A, dtype: int64

在这个示例中,ilocloc 方法都返回了相同的结果,因为 DataFrame 的索引标签与整数位置相对应。然而,在实际情况下,当索引标签不是整数时,它们的行为可能会有所不同。

示例二

(1)使用read_csv函数读取某地区房屋销售数据.csv 文件。

import pandas as pd

data = pd.read_csv('某地区房屋销售数据.csv',encoding='gbk')

data

在这里插入图片描述

(2)使用iloc()方法、1oc()方法对房屋类型为单身公寓的数据进行索引操作。

  • 下面是使用 loc 方法对房屋类型为单身公寓的数据进行索引操作的示例:
unit_data = data.loc[data['房屋类型'] == 'unit']
print(unit_data)

这里我们使用 loc 方法,然后传入一个条件,即 data['房屋类型'] == 'unit',这将返回一个布尔 Series,表示是否满足条件。然后,我们将这个条件传递给 loc 方法,它将根据条件选择满足条件的行,并返回一个新的 DataFrame,其中包含了满足条件的所有数据。

  • 如果使用 iloc 方法,您可以通过以下方式实现:
unit_data = data.iloc[(data['房屋类型'] == 'unit').values]
print(unit_data)

在这种情况下,我们首先使用 (data['房屋类型'] == 'unit').values 来获取一个布尔数组,然后将其传递给 iloc 方法,以按照布尔数组中的索引来选择行。请注意,这种方法只适用于数据没有被重新索引的情况下。
在这里插入图片描述

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BenChuat

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值