Pandas库中loc和iloc的详细解析与Python应用

在 Python 的 Pandas 库中,loc 和 iloc 是用于选择 DataFrame 或 Series 数据的两种常用索引方法。它们功能类似,但有重要的区别。

先创建一个Dataframe

import pandas as pd

# 创建 DataFrame
data = {'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}
df = pd.DataFrame(data, index=['x', 'y', 'z'])

loc:通过显式名称访问

获取行数据

  • 行列均是通过显式名称访问。
  • 行和列标签可以是字符串、数字(如果是索引值)、布尔条件等。
  • 选择范围是闭区间。
  • df.loc['x']
    

    df.loc['y']
    

    df.loc['x','A']
    

    df.loc['z','B']
    

    切片

    df.loc[1:2]
    

    报错

    df.loc['x':'y']
    

    df.loc['x':'y','A':'B']
    

    df.loc['x':'y',['A','C']]
    

    df.loc[:'y','B':]
    

    df.loc[df['A']==2,'B']#求A的值是2的元素对应的B值是多少
    

    df.loc[df['B']>4,'C']
    

    插入一道题目:

    编写一个解决方案,选择 student_id = 101 的学生的 name 和 age 并输出。

    返回结果格式如下示例所示。

    import pandas as pd
    
    def selectData(students: pd.DataFrame) -> pd.DataFrame:
        return students.loc[students["student_id"]==101,['name','age']]
    


    iloc:基于位置的索引方式访问

    取行

    df.iloc[0]#第一行
    

    df.iloc[1]#第二行
    

    df.iloc[2]#第三行
    

    取列

    df.iloc[:,0]#第一列
    

    df.iloc[:,1]#第二列
    

    df.iloc[:,2]#第三列
    

    切片

    df.iloc[:2,:]#切片
    

    df.iloc[:,:2]#切片
    

    df.iloc[1:,:2]#切片
    

    总结

    主要区别

    小技巧

  • 使用 loc 进行条件筛选或基于列名的选择。
  • 使用 iloc 处理未知列名的情况,特别是当你仅知道数据的结构时。
  • 作者:算法小菜鸟moon

    物联沃分享整理
    物联沃-IOTWORD物联网 » Pandas库中loc和iloc的详细解析与Python应用

    发表回复