Day3:loc()与iloc()

Posted 互联网杂货店

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Day3:loc()与iloc()相关的知识,希望对你有一定的参考价值。

1、使用loc()索引数据

import pandas as pd
import numpy as np

df = pd.DataFrame('城市': ['北京', '广州', '天津', '上海', '杭州', '成都', '澳门', '南京'],

                   '收入': [10000, 10000, 5000, 5002, 40000, 50000, 8000, 5000],

                   '年龄': [50, 43, 34, 40, 25, 25, 45, 32])
df.set_index([["一", "二", "三", "四", "五", "六", "七", "八"]], inplace=True)
print(df)


城市      收入   年龄
一  北京  10000  50
二  广州  10000  43
三  天津   5000  34
四  上海   5002  40
五  杭州  40000  25
六  成都  50000  25
七  澳门   8000  45
八  南京   5000  3

loc函数主要通过 行标签 索引行数据
使用loc函数,索引的是字符串,前后都要取,是属于“前闭后闭”的情况。

1、索引行标签是“一”的这一行数据
print(df.loc["一"])
城市       北京
收入    10000
年龄       50

2、索引行标签是“一”、“二”的这一行数据
print(df.loc["一":"二"])
   城市     收入  年龄
一  北京  10000   50
二  广州  10000   43

3、索引“北京”这一个数据
print(df.loc["一","城市"])
北京
通过指定行索引和索引,取到了“北京”这一数据

4、获取一个2*2的数据集(前两行前两列所交的四个数据为例)
print(df.loc["一":"二","城市":"收入"])
   城市     收入
一  北京   10000
二  广州   10000

5、索引“年龄”这一列数据
# print(df.loc["年龄"]) 对于列标签来说,上面这样用是不允许的。在索引行的时候可以这么用
print(df.loc[:,"年龄"])
一    50
二    43
三    34
四    40
五    25
六    25
七    45
八    32

6、要索引多列时也是一样的用法
print(df.loc[:,"城市":"收入"])
   城市     收入
一  北京  10000
二  广州  10000
三  天津   5000
四  上海   5002
五  杭州  40000
六  成都  50000
七  澳门   8000
八  南京   5000

2、iloc()

iloc函数主要通过 行号 索引行数据
而且,iloc函数索引的数据是int整型,因此是Python默认的前闭后开。注意只能说int型,也就是数字,输入字符的话是会报错的。

1、利用iloc索引第一行
print(df.iloc[0])
城市       北京
收入    10000
年龄       50
print(df.iloc[0:1])
   城市     收入  年龄
一  北京  10000  50
print(df.iloc[0:2])
   城市     收入  年龄
一  北京  10000  50
二  广州  10000  43

从上面三种表达,大家可以明确看到
iloc函数索引的是int型的数字,是属于前闭后开的。
(注意~索引都是默认从0开始的~)

2、利用iloc函数索引多行(索引一下奇数行)
print(df.iloc[[0,2,4,6]]) # 等同df.iloc[0:8:2]
   城市     收入  年龄
一  北京  10000  50
三  天津   5000  34
五  杭州  40000  25
七  澳门   8000  45

3、利用iloc函数索引多列(索引一下收入列和年龄列)
print(df.iloc[:,1:3]) #df.iloc[:,[1,2]]
      收入  年龄
一  10000  50
二  10000  43
三   5000  34
四   5002  40
五  40000  25
六  50000  25
七   8000  45
八   5000  32

4、利用iloc函数索引一个2*2的数据集:(前两行前两列所交的四个数据为例)
print(df.iloc[[0,1],[0,1]])
   城市     收入
一  北京  10000
二  广州  10000

以上是关于Day3:loc()与iloc()的主要内容,如果未能解决你的问题,请参考以下文章

`.loc` 和 `.iloc` 与 MultiIndex'd DataFrame

loc与iloc

熊猫 iloc 返回与 loc 不同的范围 [重复]

Python 得到 SettingWithCopyWarning - iloc 与 loc - 无法弄清楚原因

大熊猫中的“iloc”和“loc”是啥?

Pandas——ix 与 loc 与 iloc 与 icol 的区别