| 
 | 
 
 
loc函數:通過行索引"Index"中的具體值來取行數據(如取"Index"為"A"的行) 
 
iloc函數:通過行號來取行數據(如取第二行的數據) 
 
本文給出loc、iloc常見的五種用法,並附上詳細代碼。 
 
1. 利用loc、iloc提取行數據 
- import numpy as np
 
 - import pandas as pd
 
 - #创建一个Dataframe
 
 - data=pd.DataFrame(np.arange(16).reshape(4,4),index=list('abcd'),columns=list('ABCD'))
 
 -  
 
 - In[1]: data
 
 - Out[1]: 
 
 -     A   B   C   D
 
 - a   0   1   2   3
 
 - b   4   5   6   7
 
 - c   8   9  10  11
 
 - d  12  13  14  15
 
 -  
 
 - #取索引为'a'的行
 
 - In[2]: data.loc['a']
 
 - Out[2]:
 
 - A    0
 
 - B    1
 
 - C    2
 
 - D    3
 
 -  
 
 - #取第一行数据,索引为'a'的行就是第一行,所以结果相同
 
 - In[3]: data.iloc[0]
 
 - Out[3]:
 
 - A    0
 
 - B    1
 
 - C    2
 
 - D    3
 
 
  複製代碼 
2. 利用loc、iloc提取列數據 
- In[4]:data.loc[:,['A']] #取'A'列所有行,多取几列格式为 data.loc[:,['A','B']]
 
 - Out[4]: 
 
 -     A
 
 - a   0
 
 - b   4
 
 - c   8
 
 - d  12
 
 -  
 
 - In[5]:data.iloc[:,[0]] #取第0列所有行,多取几列格式为 data.iloc[:,[0,1]]
 
 - Out[5]: 
 
 -     A
 
 - a   0
 
 - b   4
 
 - c   8
 
 - d  12
 
 
  複製代碼 
 
3.利用loc、iloc提取指定行、指定列數據 
 
- In[6]:data.loc[['a','b'],['A','B']] #提取index为'a','b',列名为'A','B'中的数据
 
 - Out[6]: 
 
 -    A  B
 
 - a  0  1
 
 - b  4  5
 
 -  
 
 - In[7]:data.iloc[[0,1],[0,1]] #提取第0、1行,第0、1列中的数据
 
 - Out[7]: 
 
 -    A  B
 
 - a  0  1
 
 - b  4  5
 
  複製代碼 
 
4.利用loc、iloc提取所有數據 
- In[8]:data.loc[:,:] #取A,B,C,D列的所有行
 
 - Out[8]: 
 
 -     A   B   C   D
 
 - a   0   1   2   3
 
 - b   4   5   6   7
 
 - c   8   9  10  11
 
 - d  12  13  14  15
 
 -  
 
 - In[9]:data.iloc[:,:] #取第0,1,2,3列的所有行
 
 - Out[9]: 
 
 -     A   B   C   D
 
 - a   0   1   2   3
 
 - b   4   5   6   7
 
 - c   8   9  10  11
 
 - d  12  13  14  15
 
  複製代碼 
5.利用loc函數,根據某個數據來提取數據所在的行 
- In[10]: data.loc[data['A']==0] #提取data数据(筛选条件: A列中数字为0所在的行数据)
 
 - Out[10]: 
 
 -    A  B  C  D
 
 - a  0  1  2  3
 
 -  
 
 - In[11]: data.loc[(data['A']==0)&(data['B']==2)] #提取data数据(多个筛选条件)
 
 - Out[11]: 
 
 -    A  B  C  D
 
 - a  0  1  2  3
 
  複製代碼 
同時,以下幾種寫法也可提取數據所在的行,與第五種用法類似,僅作補充。 
 
- 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 
 
 
 |   
 
 
 
 |