STARBOY!

导航

Pandas iloc/loc/ix

   a b c d
0 11 aa 9 1
1 22 bb 8 2
2 33 cc 7 3
3 44 dd 6 4

 

一、iloc -- 通过行/列号选取数据 [左闭, 右开)

第0行

df.iloc[0]

多行

df.iloc[0:2]

选取某列

df.iloc[:, [1]]

选取第第0行一直到第2行(0:3)与第0列和第2列[0, 2]的交叉元素

df.iloc[0:3, [0,2]]

二、loc -- 通过标签来选择

选择多列 [左闭,右闭]

df.loc[:, 'a':'c']
  a b c
0 11 aa 9
1 22 bb 8
2 33 cc 7
3 44 dd 6

三、ix -- 兼具iloc和loc的特点

既可以像iloc一样通过行号选择

df.ix[1]

也可以像loc一样选取标签

df.ix[:, 'a']

不过好像ix在最近的pandas中被弃用,故不再深究其用法。

 

四、按照条件选取数据

 

选取a列中元素为11的行以及d列中元素为4的行

df.loc[(df['a']==11) | (df['d']==4)]

 

选取满足条件的列

# 第0行元素为11的列索引,第3行元素为44的列索引
cols_ini = [(df[0:1].values.tolist()[0].index(11)), (df[3:].values.tolist()[0].index(44))] # 去掉上述索引的重复值
cols
= list(set(cols_ini)) # 输出结果 dataframe
df.iloc[:, cols]

 

矩阵转置

import pandas as pd
df2 = pd.DataFrame(df.values.T, index=df.columns, columns=df.index)

 

posted on 2020-04-11 23:20  STARBOY!  阅读(173)  评论(0编辑  收藏  举报