You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于Pandas中loc索引器支持整数类型列名的疑问

为什么Pandas的loc索引器支持整数类型的标签?

首先得明确一个核心逻辑:loc的定位逻辑是匹配「轴标签」,而标签的类型并不局限于字符串——整数、日期、甚至自定义的可哈希对象,都可以作为Pandas的轴标签。

你觉得loc只能用字符串,其实是一种误解。loc的设计目标是:只要你传入的参数和DataFrame/Series的行/列标签完全一致,不管这个标签是什么类型,都能精准匹配到对应的行或列。

举个简单的例子,直观感受两者的区别:

import pandas as pd

# 创建列名为整数的DataFrame
df = pd.DataFrame([[1,2,3], [4,5,6]], columns=[0, 1, 2])

# 用loc选取列标签为1的列
print(df.loc[:, 1])
# 输出:
# 0    2
# 1    5
# Name: 1, dtype: int64

# 对比iloc,它取的是位置索引为1的列(这里刚好标签和位置一致)
print(df.iloc[:, 1])
# 输出和上面一样,但逻辑完全不同:如果列标签改成[10,20,30],iloc[:,1]还是取第二列,而loc[:,1]会报错找不到标签

再换个标签和位置不一致的例子,更能凸显两者的本质差异:

df = pd.DataFrame([[1,2,3], [4,5,6]], columns=[10, 20, 30])

# loc找标签20的列,正常返回对应数据
print(df.loc[:, 20])
# 0    2
# 1    5
# Name: 20, dtype: int64

# iloc找位置1的列,也就是第二列,结果一样但逻辑不同
print(df.iloc[:, 1])

# 如果用loc找1,会直接报错,因为DataFrame里没有这个标签
# df.loc[:, 1]  # KeyError: 1

总结一下关键点:

  • loc的参数是「标签值」,不管标签是字符串还是整数,只要存在就能匹配
  • iloc的参数是「位置偏移量」,永远是从0开始的整数,和标签本身是什么无关

Pandas这么设计是为了给用户最大的灵活性——你可以根据业务场景选择合适的标签类型,loc只负责精准匹配这些标签,不会限制标签的类型。

内容的提问来源于stack exchange,提问作者Mohammad Al Jadallah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 15:20:24