python pandas.DataFrame.loc函数使用详解

官方函数

DataFrame.loc
Access a group of rows and columns by label(s) or a boolean array.
.loc[] is primarily label based, but may also be used with a boolean array.
# 可以使用label值,但是也可以使用布尔值

  • Allowed inputs are: # 可以接受单个的label,多个label的列表,多个label的切片
  • A single label, e.g. 5 or ‘a', (note that 5 is interpreted as a label of the index, and never as an integer position along the index). #这里的5不是数值指定的位置,而是label值
  • A list or array of labels, e.g. [‘a', ‘b', ‘c'].

slice object with labels, e.g. ‘a':'f'.

Warning: #如果使用多个label的切片,那么切片的起始位置都是包含的

Note that contrary to usual python slices, both the start and the stop are included

  • A boolean array of the same length as the axis being sliced, e.g. [True, False, True].

实例详解

一、选择数值

1、生成df

df = pd.DataFrame([[1, 2], [4, 5], [7, 8]],
...   index=['cobra', 'viper', 'sidewinder'],
...   columns=['max_speed', 'shield'])

df
Out[15]:
      max_speed shield
cobra        1    2
viper        4    5
sidewinder     7    8

2、Single label. 单个 row_label 返回的Series

df.loc['viper']
Out[17]:
max_speed  4
shield    5
Name: viper, dtype: int64

2、List of labels. 列表 row_label 返回的DataFrame

df.loc[['cobra','viper']]
Out[20]:
    max_speed shield
cobra     1    2
viper     4    5

3、Single label for row and column 同时选定行和列

df.loc['cobra', 'shield']
Out[24]: 2

4、Slice with labels for row and single label for column. As mentioned above, note that both the start and stop of the slice are included. 同时选定多个行和单个列,注意的是通过列表选定多个row label 时,首位均是选定的。

df.loc['cobra':'viper', 'max_speed']
Out[25]:
cobra  1
viper  4
Name: max_speed, dtype: int64

5、Boolean list with the same length as the row axis 布尔列表选择row label
布尔值列表是根据某个位置的True or False 来选定,如果某个位置的布尔值是True,则选定该row

df
Out[30]:
      max_speed shield
cobra        1    2
viper        4    5
sidewinder     7    8

df.loc[[True]]
Out[31]:
    max_speed shield
cobra     1    2

df.loc[[True,False]]
Out[32]:
    max_speed shield
cobra     1    2

df.loc[[True,False,True]]
Out[33]:
      max_speed shield
cobra        1    2
sidewinder     7    8

6、Conditional that returns a boolean Series 条件布尔值

df.loc[df['shield'] > 6]
Out[34]:
      max_speed shield
sidewinder     7    8

7、Conditional that returns a boolean Series with column labels specified 条件布尔值和具体某列的数据

df.loc[df['shield'] > 6, ['max_speed']]
Out[35]:
      max_speed
sidewinder     7

8、Callable that returns a boolean Series 通过函数得到布尔结果选定数据

df
Out[37]:
      max_speed shield
cobra        1    2
viper        4    5
sidewinder     7    8

df.loc[lambda df: df['shield'] == 8]
Out[38]:
      max_speed shield
sidewinder     7    8

二、赋值

1、Set value for all items matching the list of labels 根据某列表选定的row 及某列 column 赋值

df.loc[['viper', 'sidewinder'], ['shield']] = 50

df
Out[43]:
      max_speed shield
cobra        1    2
viper        4   50
sidewinder     7   50

2、Set value for an entire row 将某行row的数据全部赋值

df.loc['cobra'] =10

df
Out[48]:
      max_speed shield
cobra       10   10
viper        4   50
sidewinder     7   50

3、Set value for an entire column 将某列的数据完全赋值

df.loc[:, 'max_speed'] = 30

df
Out[50]:
      max_speed shield
cobra       30   10
viper       30   50
sidewinder     30   50

4、Set value for rows matching callable condition 条件选定rows赋值

df.loc[df['shield'] > 35] = 0

df
Out[52]:
      max_speed shield
cobra       30   10
viper        0    0
sidewinder     0    0

三、行索引是数值

df = pd.DataFrame([[1, 2], [4, 5], [7, 8]],
...   index=[7, 8, 9], columns=['max_speed', 'shield'])

df
Out[54]:
  max_speed shield
7     1    2
8     4    5
9     7    8

通过 行 rows的切片的方式取多个:

df.loc[7:9]
Out[55]:
  max_speed shield
7     1    2
8     4    5
9     7    8

四、多维索引

1、生成多维索引

tuples = [
...  ('cobra', 'mark i'), ('cobra', 'mark ii'),
...  ('sidewinder', 'mark i'), ('sidewinder', 'mark ii'),
...  ('viper', 'mark ii'), ('viper', 'mark iii')
... ]
index = pd.MultiIndex.from_tuples(tuples)
values = [[12, 2], [0, 4], [10, 20],
...     [1, 4], [7, 1], [16, 36]]
df = pd.DataFrame(values, columns=['max_speed', 'shield'], index=index)

df
Out[57]:
           max_speed shield
cobra   mark i      12    2
      mark ii      0    4
sidewinder mark i      10   20
      mark ii      1    4
viper   mark ii      7    1
      mark iii     16   36

2、Single label. 传入的就是最外层的row label,返回DataFrame

df.loc['cobra']
Out[58]:
     max_speed shield
mark i     12    2
mark ii     0    4

3、Single index tuple.传入的是索引元组,返回Series

df.loc[('cobra', 'mark ii')]
Out[59]:
max_speed  0
shield    4
Name: (cobra, mark ii), dtype: int64

4、Single label for row and column.如果传入的是row和column,和传入tuple是类似的,返回Series

df.loc['cobra', 'mark i']
Out[60]:
max_speed  12
shield    2
Name: (cobra, mark i), dtype: int64

5、Single tuple. Note using [[ ]] returns a DataFrame.传入一个数组,返回一个DataFrame

df.loc[[('cobra', 'mark ii')]]
Out[61]:
        max_speed shield
cobra mark ii     0    4

6、Single tuple for the index with a single label for the column 获取某个colum的某row的数据,需要左边传入多维索引的tuple,然后再传入column

df.loc[('cobra', 'mark i'), 'shield']
Out[62]: 2

7、传入多维索引和单个索引的切片:

df.loc[('cobra', 'mark i'):'viper']
Out[63]:
           max_speed shield
cobra   mark i      12    2
      mark ii      0    4
sidewinder mark i      10   20
      mark ii      1    4
viper   mark ii      7    1
      mark iii     16   36

df.loc[('cobra', 'mark i'):'sidewinder']
Out[64]:
          max_speed shield
cobra   mark i     12    2
      mark ii     0    4
sidewinder mark i     10   20
      mark ii     1    4

df.loc[('cobra', 'mark i'):('sidewinder','mark i')]
Out[65]:
          max_speed shield
cobra   mark i     12    2
      mark ii     0    4
sidewinder mark i     10   20

到此这篇关于python pandas.DataFrame.loc函数使用详解的文章就介绍到这了,更多相关pandas.DataFrame.loc函数内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 浅谈pandas中Dataframe的查询方法([], loc, iloc, at, iat, ix)

    pandas为我们提供了多种切片方法,而要是不太了解这些方法,就会经常容易混淆.下面举例对这些切片方法进行说明. 数据介绍 先随机生成一组数据: In [5]: rnd_1 = [random.randrange(1,20) for x in xrange(1000)] ...: rnd_2 = [random.randrange(1,20) for x in xrange(1000)] ...: rnd_3 = [random.randrange(1,20) for x in xrange(1

  • 详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)

    在操作DataFrame时,肯定会经常用到loc,iloc,at等函数,各个函数看起来差不多,但是还是有很多区别的,我们一起来看下吧. 首先,还是列出一个我们用的DataFrame,注意index一列,如下: 接下来,介绍下各个函数的用法: 1.loc函数 愿意看官方文档的,请戳这里,这里一般最权威. loc函数是基于"标签"选择数据的,但是也可以接受一个boolean的array,对于每个用法,我们从参数方面来一一举例: 1.1 单个label 接受一个"标签"(

  • python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix实现

    相信很多人像我一样在学习python,pandas过程中对数据的选取和修改有很大的困惑(也许是深受Matlab)的影响... 到今天终于完全搞清楚了!!! 先手工生出一个数据框吧 import numpy as np import pandas as pd df = pd.DataFrame(np.arange(0,60,2).reshape(10,3),columns=list('abc')) df 是这样子滴 那么这三种选取数据的方式该怎么选择呢? 一.当每列已有column name时,用

  • python pandas.DataFrame.loc函数使用详解

    官方函数 DataFrame.loc Access a group of rows and columns by label(s) or a boolean array. .loc[] is primarily label based, but may also be used with a boolean array. # 可以使用label值,但是也可以使用布尔值 Allowed inputs are: # 可以接受单个的label,多个label的列表,多个label的切片 A singl

  • Python pandas库中的isnull()详解

    问题描述 python的pandas库中有一个十分便利的isnull()函数,它可以用来判断缺失值,我们通过几个例子学习它的使用方法. 首先我们创建一个dataframe,其中有一些数据为缺失值. import pandas as pd import numpy as np df = pd.DataFrame(np.random.randint(10,99,size=(10,5))) df.iloc[4:6,0] = np.nan df.iloc[5:7,2] = np.nan df.iloc[

  • Python Pandas学习之基本数据操作详解

    目录 1索引操作 1.1直接使用行列索引(先列后行) 1.2结合loc或者iloc使用索引 1.3使用ix组合索引 2赋值操作 3排序 3.1DataFrame排序 3.2Series排序 为了更好的理解这些基本操作,下面会通过读取一个股票数据,来进行Pandas基本数据操作的语法介绍. # 读取文件(读取保存文件后面会专门进行讲解,这里先直接调用下api) data = pd.read_csv("./data/stock_day.csv")  # 读取当前目录下一个csv文件 # 删

  • python yield和Generator函数用法详解

    这篇文章主要介绍了python yield和Generator函数用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 首先我们从一个小程序导入,各定一个list,找出其中的素数,我们会这样写 import math def is_Prims(number): if number == 2: return True //除2以外的所有偶数都不是素数 elif number % 2 == 0: return False //如果一个数能被除1和

  • python pandas dataframe 去重函数的具体使用

    今天笔者想对pandas中的行进行去重操作,找了好久,才找到相关的函数 先看一个小例子 from pandas import Series, DataFrame data = DataFrame({'k': [1, 1, 2, 2]}) print data IsDuplicated = data.duplicated() print IsDuplicated print type(IsDuplicated) data = data.drop_duplicates() print data 执行

  • Python字典中items()函数案例详解

    Python3:字典中的items()函数 一.Python2.x中items():   和之前一样,本渣渣先贴出来python中help的帮助信息: >>> help(dict.items) Help on method_descriptor: items(...) D.items() -> list of D's (key, value) pairs, as 2-tuples >>> help(dict.iteritems) Help on method_de

  • Python学习之字符串函数使用详解

    目录 1 搜索字符串函数 2 设置字符串格式函数 3 改变字符串大小写函数 4 选定字符串函数 5 拆分字符串函数 6 替换字符串函数 Python的友好在于提供了非常好强大的功能函数模块,对于字符串的使用,同样提供许多简单便捷的字符串函数.Python 字符串自带了很多有用的函数,在字符串函数之前先介绍一个非常实用的dir()内置函数,因为对每一个初学者还是大佬级别的python程序员,都不能完全记住所有方法.而该函数可以查看所有这些函数,可调用 dir 并将参数指定为任何字符串(如 dir(

  • python中的map函数语法详解

    目录 1map()函数的简介以及语法: 2map()函数实例: 1 map()函数的简介以及语法: map是python内置函数,会根据提供的函数对指定的序列做映射. map()函数的格式是: map(function,iterable,...) 第一个参数接受一个函数名,后面的参数接受一个或多个可迭代的序列,返回的是一个集合. 把函数依次作用在list中的每一个元素上,得到一个新的list并返回.注意,map不改变原list,而是返回一个新list. 2 map()函数实例: del squa

  • python Pandas库read_excel()参数实例详解

    目录 1.read_excel函数原型 2.参数使用举例 2.1. io和sheet_name参数 2.2. header参数 2.3. skipfooter参数 2.5. parse_dates参数 2.6. converters参数 2.7. na_values参数 2.8. usecols参数 总结 Pandas read_excel()参数使用详解 1.read_excel函数原型 def read_excel(io, sheet_name=0, header=0, names=None

  • Python Pandas知识点之缺失值处理详解

    前言 数据处理过程中,经常会遇到数据有缺失值的情况,本文介绍如何用Pandas处理数据中的缺失值. 一.什么是缺失值 对数据而言,缺失值分为两种,一种是Pandas中的空值,另一种是自定义的缺失值. 1. Pandas中的空值有三个:np.nan (Not a Number) . None 和 pd.NaT(时间格式的空值,注意大小写不能错),这三个值可以用Pandas中的函数isnull(),notnull(),isna()进行判断. isnull()和notnull()的结果互为取反,isn

随机推荐