Python语言pandas包中loc和iloc的用法

By sto at 2019-03-19 • 0人收藏 • 96人看过

1 iloc的用法

1.1 通过行号取出数据


>>> import pandas as pd
>>> import numpy as np
>>> df = pd.DataFrame(np.random.randn(7, 5))
>>> df
          0         1         2         3         4
0 -0.172307 -0.134692  0.097657 -0.258567  0.741993
1 -1.045985  0.249029  1.437222  1.073699 -0.445271
2  0.053848 -2.800437  0.838717  0.159653  0.209152
3 -0.512762  0.332349  0.311690  1.124386  1.411452
4 -1.318440  0.766594  0.781191 -1.488702  0.537859
5 -0.421063  0.343654  0.576994  0.454220 -1.158064
6  1.619574  1.008350 -1.689693  0.294818  0.272525
>>> df.iloc[1]
0   -1.045985
1    0.249029
2    1.437222
3    1.073699
4   -0.445271
>>> df.iloc[:2,2]
0    0.097657
1    1.437222
Name: 2, dtype: float64
>>> df.iloc[:2,2] = NA
>>> df
          0         1         2         3         4
0 -0.172307 -0.134692       NaN -0.258567  0.741993
1 -1.045985  0.249029       NaN  1.073699 -0.445271
2  0.053848 -2.800437  0.838717  0.159653  0.209152
3 -0.512762  0.332349  0.311690  1.124386  1.411452
4 -1.318440  0.766594  0.781191 -1.488702  0.537859
5 -0.421063  0.343654  0.576994  0.454220 -1.158064
6  1.619574  1.008350 -1.689693  0.294818  0.272525


1.2 通过列号取出数据

>>> df.iloc[:,[0,1]]
          0         1
0 -0.172307 -0.134692
1 -1.045985  0.249029
2  0.053848       NaN
3 -0.512762  0.332349
4 -1.318440  0.766594
5 -0.421063  0.343654
6  1.619574  1.008350


1.3 通过行和列号取出数据

>>> df.iloc[[0,1],[0,1]]
          0         1
0 -0.172307 -0.134692
1 -1.045985  0.249029
>>> data.iloc[0:2,[2]]
   C
a  2
b  6

2 loc的用法

2.1 通过行的名称取出数据


>>> data=pd.DataFrame(np.arange(12).reshape(3,4),index=list('abc'),columns=list('ABCD'))
>>> data
   A  B   C   D
a  0  1   2   3
b  4  5   6   7
c  8  9  10  11
>>> data.loc['b']
A    4
B    5
C    6
D    7


2.2 通过列的名称取出数据


>>> data.loc[:,['B']]
   B
a  1
b  5
c  9


2.3 通过行和列的名称取出数据


>>> data.loc[['a','c'],['B']]
   B
a  1
c  9
>>> data.loc['a':'c',['B']]
   B
a  1
b  5
c  9


登录后方可回帖

信息栏
数据人网是数据人学习、交流和分享的平台,专注于从数据中学习,努力发觉数据之洞见,积极利用数据之价值
Loading...