您的位置:

详解DataFrame.loc

一、用途与特点

DataFrame是Pandas中最重要的数据结构之一,而DataFrame.loc则是对于DataFrame进行行列选取的一种方法。它通过行标签名和列标签名进行数据选取。

相对于其他方法,DataFrame.loc具有更高的灵活性和准确性。与iloc根据行列的位置来进行选取不同,使用loc可以根据行列的标签名称来进行选取。并且在同时进行行列选取时,使用loc的效率更高。

    # 用于基于标签的索引(即行列标签)进行选择
    # df.loc[row, column]
    # row可以是行标签也可以是布尔数组,column可以是列标签也可以是布尔数组

二、基本用法

选择某些列:

    import pandas as pd
    import numpy as np

    df = pd.DataFrame(np.random.randn(6,4), columns=list('ABCD'), index=list('abcdef'))

    # 根据标签获取列数据
    print(df.loc[:, ['A', 'B']])

选择某些行:

    # 根据标签获取行数据
    print(df.loc[['a', 'b', 'f'], :])

选择某个区域的数据:

    # 根据标签获取行和列的区域数据
    print(df.loc['d':'f', 'A':'C'])

三、高级用法

布尔索引

在DataFrame.loc中使用布尔值可以进行高级筛选。

    # 布尔索引
    df.loc[df['A'] > 0, ['A','B']]

使用函数进行映射

在DataFrame中使用applymap或apply方法可以对数据进行转换。在.loc后使用,我们可以完成数据筛选和转换的一步操作。

    # 对筛选出来的数据进行applymap的map函数映射操作
    df.loc[df['A'] > 0, ['A','B']].applymap(lambda x: x*2)

使用where方法

使用where方法进行条件筛选。对于筛选为False的数据,其对应位置上的数据会被填充为NaN。

    # 对q值保留填充,而对于其他的行列标签均标记为NaN
    df.loc[df['A'] > 0, 'B'] = np.nan
    df.where(pd.notna(df), df.mean(), axis='columns')

四、总结

本文基于DataFrame的高级索引方法DataFrame.loc进行了详细讲解,介绍了其基本使用方法和高级应用方法。

对于Pandas用户而言,熟悉DataFrame.loc的使用方法可以帮助我们更加灵活地对数据进行筛选和转换。它是我们使用Pandas解决数据分析和处理问题的重要方法。