1.df[]按行列选取,这种情况一次只能选取行或者列
2.df.loc方法,根据行、列的标签值查询
3.df.iloc方法,根据行、列的数字位置查询,根据索引定位
4.df.query方法
1.使用单个label值查询数据
2.使用值列表批量查询
3.使用数值区间进行范围查询
4.使用条件表达式查询
5.调用函数查询
以上查询方法,既适用于行,也适用于列
#np.random.rand(25):是用numpy的random方法里的rand函数,生成25个数
#reshape([5, 5])生成的数排列成五行五列
df = pd.DataFrame(np.random.rand(25).reshape([5, 5]), index=['A', 'B', 'C', 'D', 'E'], columns=['c1', 'c2', 'c3', 'c4', 'c5'])
df
c1 c2 c3 c4 c5
A 0.524883 0.758369 0.142195 0.749133 0.778870
B 0.553597 0.346376 0.627557 0.315433 0.211936
C 0.074190 0.511647 0.637063 0.543228 0.683616
D 0.176934 0.213539 0.124174 0.403670 0.028325
E 0.315002 0.832465 0.462465 0.985873 0.351414
#获取c1,c2两列
df[['c1','c3']]
c1 c3
A 0.524883 0.142195
B 0.553597 0.627557
C 0.074190 0.637063
D 0.176934 0.124174
E 0.315002 0.462465
#获取c1列
df.c1
A 0.524883
B 0.553597
C 0.074190
D 0.176934
E 0.315002
Name: c1, dtype: float64
#获取索引为A-C行数据
df['A':'C']
c1 c2 c3 c4 c5
A 0.524883 0.758369 0.142195 0.749133 0.778870
B 0.553597 0.346376 0.627557 0.315433 0.211936
C 0.074190 0.511647 0.637063 0.543228 0.683616
#获取2-3行数据
df[1:3]
c1 c2 c3 c4 c5
B 0.553597 0.346376 0.627557 0.315433 0.211936
C 0.074190 0.511647 0.637063 0.543228 0.683616
df.loc['A':'E', ['c4','c5','c1','c2','c3']]
c4 c5 c1 c2 c3
A 0.749133 0.778870 0.524883 0.758369 0.142195
B 0.315433 0.211936 0.553597 0.346376 0.627557
C 0.543228 0.683616 0.074190 0.511647 0.637063
D 0.403670 0.028325 0.176934 0.213539 0.124174
E 0.985873 0.351414 0.315002 0.832465 0.462465
df[['c4','c5','c1','c2','c3']]
c4 c5 c1 c2 c3
A 0.749133 0.778870 0.524883 0.758369 0.142195
B 0.315433 0.211936 0.553597 0.346376 0.627557
C 0.543228 0.683616 0.074190 0.511647 0.637063
D 0.403670 0.028325 0.176934 0.213539 0.124174
E 0.985873 0.351414 0.315002 0.832465 0.462465
df.loc['A','c2']
0.7583694850293937
df.loc[['A','B','D'],['c1','c3']]
c1 c3
A 0.524883 0.142195
B 0.553597 0.627557
D 0.176934 0.124174
#查找c2这一列大于0.5的所有行和列
df.loc[df['c2']> 0.5,:]
c1 c2 c3 c4 c5
A 0.524883 0.758369 0.142195 0.749133 0.778870
C 0.074190 0.511647 0.637063 0.543228 0.683616
E 0.315002 0.832465 0.462465 0.985873 0.351414
#查找c2大于0.5的行并且c3要小于0.5的所有行和列
df[(df['c2']>0.5) & (df['c3']<0.5)]
c1 c2 c3 c4 c5
A 0.524883 0.758369 0.142195 0.749133 0.778870
E 0.315002 0.832465 0.462465 0.985873 0.351414
def query_my_data(df):
return ((df['c3']>0.2) & (df["c4"]<0.8))
df.loc[query_my_data, :]
c1 c2 c3 c4 c5
B 0.845310 0.545040 0.946026 0.106405 0.984376
C 0.844622 0.947104 0.878854 0.377638 0.175846
E 0.139952 0.420424 0.364295 0.012773 0.307853
#提取1-3行,2-4列数据
df.iloc[0:3,1:4]
c2 c3 c4
A 0.758369 0.142195 0.749133
B 0.346376 0.627557 0.315433
C 0.511647 0.637063 0.543228
#提取第二第三行,第4列数据
df.iloc[[1,2],[3]]
c4
B 0.315433
C 0.543228
#提取指定位置单个数值
df.iloc[3,4]
0.028324770869041616