python ix loc iloc_loc和iloc的用法和区别

loc——通过行标签索引行数据

iloc——通过行号索引行数据

ix——通过行标签或者行号索引行数据(基于loc和iloc 的混合)

标签切片,如’a’:‘c’,与序列切片如0:2不同,后者不包含index=2的元素,前者包含结束标签’c’所在的行。

布尔类型数组作为标签,例如[True, False]等价于[‘a’,‘c’]

1.loc

import numpy as np

import pandas as pd

from pandas import *

from numpy import *

data=DataFrame(np.arange(16).reshape(4,4),index=list("ABCD"),columns=list("wxyz"))

print(data)

# w x y z

#A 0 1 2 3

#B 4 5 6 7

#C 8 9 10 11

#D 12 13 14 15

#loc

#行的选取

print(data.loc["A"])

print(type(data.loc["A"]))

#w 0

#x 1

#y 2

#z 3

#Name: A, dtype: int32

#print(data.loc[["A"]])

print(type(data.loc[["A"]]))

# w x y z

#A 0 1 2 3

##综上,[]返回Series,[[]]返回DataFrame

print(data.loc["A","w"])

print(type(data.loc["A","w"]))

#0

#print(data.loc[:,"w"])

print(type(data.loc[:,"w"]))

#A 0

#B 4

#C 8

#D 12

#Name: w, dtype: int32

#print(data.loc["A":"C"])

print(type(data.loc["A":"C"]))

# w x y z

#A 0 1 2 3

#B 4 5 6 7

#C 8 9 10 11

#print(data.loc["A":"C","w":"y"])

print(type(data.loc["A":"C","w":"y"]))

# w x y

#A 0 1 2

#B 4 5 6

#C 8 9 10

#print(data.loc[["A","C"],["w","y"]])

print(type(data.loc[["A","C"],["w","y"]]))

# w y

#A 0 2

#C 8 10

#print(data.loc[:,["w","y"]])

print(type(data.loc[:,["w","y"]]))

# w y

#A 0 2

#B 4 6

#C 8 10

#D 12 14

##列的选取

print(data["w"])#等同于print(data.loc[:,"w"])

#A 0

#B 4

#C 8

#D 12

#Name: w, dtype: int32

print(data.loc[:,"w"])

#A 0

#B 4

#C 8

#D 12

#Name: w, dtype: int32

print(data["w"].equals(data.loc[:,"w"]))#True

#根据特殊条件选取行列

print(data["w"]>5)

#A False

#B False

#C True

#D True

#Name: w, dtype: bool

print(data.loc[data["w"]>5])

# w x y z

#C 8 9 10 11

#D 12 13 14 15

print(data.loc[data["w"]>5,"w"])

print(type(data.loc[data["w"]>5,"w"]))

#C 8

#D 12

#Name: w, dtype: int32

#print(data.loc[data["w"]>5,["w"]])

print(type(data.loc[data["w"]>5,["w"]]))

# w

#C 8

#D 12

#print(data["w"]==0)

print(data.loc[lambda data:data["w"]==0])

print(type(data.loc[lambda data:data["w"]==0]))

#A True

#B False

#C False

#D False

#Name: w, dtype: bool

# w x y z

#A 0 1 2 3

##loc赋值

print(data)

# w x y z

#A 0 1 2 3

#B 4 5 6 7

#C 8 9 10 11

#D 12 13 14 15

data.loc[["A","C"],["w","x"]]=999

print(data)

# w x y z

#A 999 999 2 3

#B 4 5 6 7

#C 999 999 10 11

#D 12 13 14 15

2.iloc

data=DataFrame(np.arange(16).reshape(4,4),index=list("ABCD"),columns=list("wxyz"))

print(data)

# w x y z

#A 0 1 2 3

#B 4 5 6 7

#C 8 9 10 11

#D 12 13 14 15

print(data.iloc[0])

print(type(data.iloc[0]))

#w 0

#x 1

#y 2

#z 3

#Name: A, dtype: int32

##print(data.iloc["A"])报错

#print(data.loc[0])报错

print(data.loc[["A"]])

print(type(data.loc["A"]))

# w x y z

#A 0 1 2 3

#

3.iloc和loc差别

iloc是按照行数取值,而loc按着index名取值

data=DataFrame(np.arange(16).reshape(4,4),index=list("1234"),columns=list("wxyz"))

print(data)

# w x y z

#1 0 1 2 3

#2 4 5 6 7

#3 8 9 10 11

#4 12 13 14 15

print(data.iloc[0])

#w 0

#x 1

#y 2

#z 3

#Name: 1, dtype: int32

#print(data.loc[0])报错

参考:https://blog.csdn.net/boywaiter/article/details/86012620

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值