Pandas中loc和iloc函數用法詳解(源碼+實例)


 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM