沧海拾珠

Pandas 中的索引设置及查找

1. 设置dataFrame的索引, set_index(keys, inplace = False/True),keys要设置为索引的列,inplace一般默认为False,

表示不修改dataFrame,如果为True,则修改dataFrame.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
data:
a b c d
0 bar one z 1.0
1 bar two y 2.0
2 foo one x 3.0
3 foo two w 4.0
data.set_index('b', inplace = True)
data:
b a c d
one bar z 1.0
two bar y 2.0
one foo x 3.0
two foo w 4.0

2. 重置索引,reset_index(inplace= False/True)。重置索引之后,产生新的index,原先的index会变为列。

inplace 为True 表示在dataFrame本身进行修改。

1
2
3
4
5
6
7
8
9
10
11
12
>>> df = pd.DataFrame([('bird', 389.0),
... ('bird', 24.0),
... ('mammal', 80.5),
... ('mammal', np.nan)],
... index=['falcon', 'parrot', 'lion', 'monkey'],
... columns=('class', 'max_speed'))
>>> df.reset_index()
index class max_speed
0 falcon bird 389.0
1 parrot bird 24.0
2 lion mammal 80.5
3 monkey mammal NaN

3.对索引进行排序,df.sort_index(inplace = False/True, ascending = False/True)

4.对索引信息进行查找,loc和iloc的使用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import pandas as pd
df = pd.DataFrame([['a','b','c','d'],['x','y','z','q'],['e','f','g','h']],
columns = ['A','B','C','D'],
index = ['one','two','three'])
df.loc[:,['A','C']] #获取A,C两列信息。
df.iloc[:,[0,2]] #同样获取A,C两列信息。
A C
one a c
two x z
three e g
df.loc[:,'A':'C'] # 获取A列到C列之间的列,df.iloc[:,0:3]也能得到同样的结果。
A B C
one a b c
two x y z
three e f g

如果你想要选取某一行的数据,可以使用df.loc[[i]]或者df.iloc[[i]]。

1
2
df.loc[['one']]
df.iloc[[i]]