pandas.DataFrame.loc/ iloc

文档链接:https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.loc.html?highlight=loc#pandas.DataFrame.loc

转载链接:https://blog.csdn.net/W_weiying/article/details/81411257

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.

loc函数:通过行索引 “Index” 中的具体值来取行数据(如取"Index"为"A"的行)

iloc函数:通过行号来取行数据(如取第二行的数据)

  1. 利用loc、iloc提取行数据
data=pd.DataFrame(np.arange(16).reshape(4,4),index=list('abcd'),columns=list('ABCD'))
data
#取索引为'a'的行
data.loc['a']
#取第一行数据,索引为'a'的行就是第一行,所以结果相同
data.iloc[0]
  1. 利用loc、iloc提取列数据
data.loc[:,['A']] #取'A'列所有行,多取几列格式为 data.loc[:,['A','B']]
data.iloc[:,[0]] #取第0列所有行,多取几列格式为 data.iloc[:,[0,1]]
  1. 利用loc、iloc提取指定行、指定列数据
data.loc[['a','b'],['A','B']] #提取index为'a','b',列名为'A','B'中的数据
data.iloc[[0,1],[0,1]] #提取第0、1行,第0、1列中的数据
  1. 利用loc、iloc提取所有数据
data.loc[:,:] #取A,B,C,D列的所有行
data.iloc[:,:] #取第0,1,2,3列的所有行
  1. 利用loc函数,根据某个数据来提取数据所在的行
data.loc[data['A']==0] #提取data数据(筛选条件: A列中数字为0所在的行数据)
data.loc[(data['A']==0)&(data['B']==2)] #提取data数据(多个筛选条件)

同时,以下几种写法也可提取数据所在的行,与第五种用法类似,仅作补充。

In[12]: data[data['A']==0] #dataframe用法
In[13]: data[data['A'].isin([0])] #isin函数
In[14]: data[(data['A']==0)&(data['B']==2)] #dataframe用法
In[15]: data[(data['A'].isin([0]))&(data['B'].isin([2]))] #isin函数
 
Out[15]: 
   A  B  C  D
a  0  1  2  3

利用loc函数的时候,当index相同时,会将相同的Index全部提取出来,优点是:如果index是人名,数据框为所有人的数据,那么我可以将某个人的多条数据提取出来分析;缺点是:如果index不具有特定意义,而且重复,那么提取的数据需要进一步处理,可用.reset_index()函数重置index。

pandas.DataFrame.loc/ iloc_第1张图片
Single label. Note this returns the row as a Series在这里插入图片描述List of labels. Note using [[]] returns a DataFrame.在这里插入图片描述
Single label for row and column在这里插入图片描述

你可能感兴趣的:(pandas)