python-3.x 无法理解Pandas中loc索引器中的标记概念

fquxozlt  于 2023-02-06  发布在  Python
关注(0)|答案(1)|浏览(135)

我有一个问题,想了解一下,所以问题是在Pandas中我们有两个索引器(loc,iloc),我们可以使用它来选择特定的列和行,而***loc是基于数据选择方法标记的,这意味着我们必须传递要选择的行或列的名称***,而***iloc是一个基于索引的选择方法,这意味着我们必须在方法中传递整数索引来选择特定的行/列***,因此,如果我有下面的数据框,列名为“字符串”

我可以按如下方式使用loc:

因此,如果我将该列重命名为数字,并且该列的名称类型变为'integer',如下所示:

如果我提供了整型列的名字,那么使用loc,为什么这样做没有错误呢:

我的意思是,如果为标记数据使用loc,为什么它对列名起作用,如数字0、1、2、3,类型为“INTEGER”

k5ifujac

k5ifujac1#

你误解了标签的定义。这并不意味着它是一个字符串,而是它在屏幕上的显示方式。问题是我们经常(总是)使用名称来表示列,使用数字来表示行。

sr = pd.Series([7, 12, 49], index=[11, 12, 13])
print(sr)

# Output
11     7
12    12
13    49
dtype: int64

这个系列的第一个索引是14,如果你使用.loc(按标签)或0,如果你使用.iloc(按位置),但不幸的是,Pandas的自动RangeIndex开始为0,所以使用.loc.iloc看起来一样(但不是!)

df = pd.DataFrame(np.arange(1, 10).reshape(3, 3), index=list('XYZ'), columns=range(101, 104))
print(df)

   101  102  103
X    1    2    3
Y    4    5    6
Z    7    8    9

要获得值5,可以用途:

# Remember, this is what you see to the screen (this is the label)
>>> df.loc['Y', 102]
5

# I have to think to convert what you see to coordinates (this is the position)
>>> df.iloc[1, 1]
5

相关问题