Pandas中loc和iloc函数用法总结, 以及如何在groupBy后提取分组的指定行数据

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

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

import numpy as np
import pandas as pd

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

In[2]: data.loc['a']
Out[2]:
A    0
B    1
C    2
D    3

In[3]: data.iloc[0]
Out[3]:
A    0
B    1
C    2
D    3
In[4]:data.loc[:,['A']]
Out[4]:
    A
a   0
b   4
c   8
d  12

In[5]:data.iloc[:,[0]]
Out[5]:
    A
a   0
b   4
c   8
d  12

In[6]:data.loc[['a','b'],['A','B']]
Out[6]:
   A  B
a  0  1
b  4  5

In[7]:data.iloc[[0,1],[0,1]]
Out[7]:
   A  B
a  0  1
b  4  5
In[8]:data.loc[:,:]
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[:,:]
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
In[10]: data.loc[data['A']==0]
Out[10]:
   A  B  C  D
a  0  1  2  3

In[11]: data.loc[(data['A']==0)&(data['B']==1)]
Out[11]:
   A  B  C  D
a  0  1  2  3

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

In[12]: data[data['A']==0]
In[13]: data[data['A'].isin([0])]
In[14]: data[(data['A']==0)&(data['B']==1)]
In[15]: data[(data['A'].isin([0]))&(data['B'].isin([1]))]

Out[15]:
   A  B  C  D
a  0  1  2  3

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

接下来是总结iloc在特殊场景下的用法:

:取每个user同一subject排倒数第二得成绩

In[16]:
df = pd.DataFrame({'user': ['A', 'B', 'A','D'], 'subject': [11, 12, 11, 13], 'score': [90, 99, 89, 90]})
df
Out[16]:
    user    subject     score
0   A   11  90
1   B   12  99
2   A   11  89
3   D   13  90

In[17]:
grouped_data = df.sort_values(by='score').groupby(['user', 'subject'])['score'].apply(lambda i:i.iloc[-2] if len(i)> 1 else i.iloc[-1])
grouped_data
Out[17]:
user  subject
A     11       89
B     12       99
D     13       90
Name: score, dtype: int64

Original: https://blog.csdn.net/qq_39657585/article/details/114778969
Author: Demi 丫
Title: Pandas中loc和iloc函数用法总结, 以及如何在groupBy后提取分组的指定行数据

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/678813/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球