pandas.DataFrame索引之 loc与iloc用法

pandas.DataFrame()的loc locloc与iloc ilociloc用法
pandas.DataFrame() pandas.DataFrame()pandas.DataFrame()实际上是一个二维矩阵,loc locloc与iloc ilociloc方法都是用于从pandas.DataFrame() pandas.DataFrame()pandas.DataFrame()中选取一些行,一些列,或者具体的某个位置的值,也可以间接的来改变DataFrame DataFrameDataFrame里面的满足条件的行,列,或具体位置的值,loc locloc与iloc ilociloc的区别就在于loc locloc是Selection by Label Selection\ by\ LabelSelection by Label (即通过标签索引),而iloc ilociloc是Selection by Position Selection\ by\ PositionSelection by Position (即通过DataFrame DataFrameDataFrame的下标索引,DataFrame DataFrameDataFrame行列下标都是0,1,2... 0,1,2...0,1,2...)

函数原型
df.loc[row_indexer,column_indexer] df.loc[row\_indexer,column\_indexer]df.loc[row_indexer,column_indexer] (iloc ilociloc也一样)
其中row_indexer row\_indexerrow_indexer与column_indexer column\_indexercolumn_indexer分别指行和列的索引方法,下文要讲的就是各种各样的索引方法,每种方法即可作为row_indexer row\_indexerrow_indexer也可以作为column_indexer column\_indexercolumn_indexer,所以可以自由组合(但是只能loc locloc与loc locloc的方法组合,iloc ilociloc与iloc ilociloc的方法组合,不可交叉),在不指定column_indexer column\_indexercolumn_indexer的情况下默认全部选,但是如果不指定row_indexer row\_indexerrow_indexer的话需要这样写DataFrame.loc[:,column_indexer] DataFrame.loc[:,column\_indexer]DataFrame.loc[:,column_indexer]

pandas.DataFrame.loc pandas.DataFrame.locpandas.DataFrame.loc
loc locloc方法通过标签或者bool数组选取一些行和列,首先构造一个DataFrame,作为全文解析用的例子:

import pandas as pd
import numpy as np  #numpy后面要用到

df=pd.DataFrame([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]]
    ,columns=['Chinease','Math','English','Politics']
    ,index=['Bob','Cindy','Alice','QWQ'])
print(df)
1
2
3
4
5
6
7
也就是这样的一个DataFrame:

Chinease    Math    English    Politics
Bob    1    2    3    4
Cindy    5    6    7    8
Alice    9    10    11    12
QWQ    13    14    15    16
loc locloc的几种使用方法如下所述:

通过单个标签选取一行或者一列,如 ‘Alice’
如选取Alice这一行:
print(df.loc['Alice'])   #返回值类型为Series
1
输出如图:

当然也可以选取一列:
print(df.loc[:,'Math']) 
1
输出如图:

对应的修改某一行或者某一列的所有值的操作为:
df.loc['Bob']=10 #修改Bob这一行的所有值为10
df.loc[:,'English']=0 #修改English这一列的所有值为0
df.loc['Bob','English']=0 #修改Bob同学的English成绩为0
1
2
3
剩下的方法对应的改值方法类似,故下面不再赘述
通过标签的一个列表或者一个array来选取一些行
如选取Bob和Alice这两行
print(df.loc[['Bob','Alice']])  #返回值类型为DataFrame
1
运行结果:

也可以通过使用numpy.array来索引:
print(df.loc[np.array(['Bob','Alice'])])
1
运行结果与上图一致
通过标签的一个切片(slice) (slice)(slice)来选取一些连续的行,这里需要注意两点,第一这里是标签的切片,比如 ‘Bob’:‘Alice’ 这样,第二就是这里的切片有一点不同于python里的普通切片:这里的切片包含上界
比如选取从Bob到Alice之间的所有行:
print(df.loc['Bob':'Alice']) #返回值类型为DataFrame
1
运行结果如图:

通过一个与轴等长的bool boolbool数组选取一些行,这里的数组实际上可以是list listlist或者numpy.array numpy.arraynumpy.array或者是值类型为bool boolbool的Series SeriesSeries
比如选取 Bob, Alice, QWQ 这三行:
print(df.loc[[False,False,True,True]])  #list
print(df.loc[np.array([False,False,True,True])]) #numpy.array
print(df.loc[df['English']>8]) #语句df['English']>8返回的就是一个只为布尔类型的Series
1
2
3
三种写法效果相同:

上述四种方法可以两两组合来同时索引行和列
例如:
print(df.loc[df['English']>6,[True,False,True,True]]) #取English大于6的行与第0,2,3列的交集
1
输出如下所示:

pandas.DataFrame.iloc pandas.DataFrame.ilocpandas.DataFrame.iloc
iloc ilociloc方法通过下标(即整数)访问一些行或者列,只是把loc locloc方法中采用的标签索引改成下表访问了而已,方法与上述方法相同,故这里只给出一些例子,读者需要用的话可以自行运行测试

通过一个整数下标访问:
df.iloc[0] #返回df的第0行,返回值类型为Series
1
通过一个包含整数的list listlist访问:
df.iloc[[0,2,3]] #返回df的第0,2,3行,返回值类型为DataFrame
1
通过一个切片访问,注意这里的切片和不同的切片一样,即不包含上界
df.iloc[1:3] #返回df的第1,2行,返回值类型为DataFrame
1
通过一个与轴等长的布尔数组访问
df.iloc[[True,False,True,True]] #返回df中第0,2,3行,返回值类型为DataFrame
1
上述四种方式可以两两组合来同时索引行和列
例如:
print(df.iloc[0:3,[True,False,True,True]]) #选取第0,1,2行与0,2,3列的交集,返回值类型为DataFrame
1
参考
官方文档
————————————————
版权声明:本文为优快云博主「wzw1105」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/qq_40791842/article/details/103018201

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值