生成1-25的数据,并转为5×5的数组,调用DataFrame转为dataframe。
arr=np.arange(1,26,1).reshape((5,5))
df=pd.DataFrame(arr)
print(df)
0 1 2 3 4
0 1 2 3 4 5
1 6 7 8 9 10
2 11 12 13 14 15
3 16 17 18 19 20
4 21 22 23 24 25
获取dataframe的行列数、行列索引等
print(f'形状:{df.shape}')
print(f'列索引:{list(df.columns)}')
print(f'行索引:{list(df.index)}')
形状:(5, 5)
列索引:[0, 1, 2, 3, 4]
行索引:[0, 1, 2, 3, 4]
直接通过[],在[]中写行列两个元素即可获取指定坐标的元素。
print(f'(1,2):{df.iloc[1,2]}')
#(1,2):8
print(f'第1行\n{df.iloc[1]}')
print(f'第1-3行\n{df.iloc[1:4]}')
'''
第1行
0 6
1 7
2 8
3 9
4 10
Name: 1, dtype: int32
第1-3行
0 1 2 3 4
1 6 7 8 9 10
2 11 12 13 14 15
3 16 17 18 19 20
'''
print(f'第1列\n{df[1]}')
print(f'第1-3列\n{df[df.columns[1:4]]}')
'''
第1列
0 2
1 7
2 12
3 17
4 22
Name: 1, dtype: int32
第1-3列
1 2 3
0 2 3 4
1 7 8 9
2 12 13 14
3 17 18 19
4 22 23 24
'''
注意:当需要获取多;列时,这里不能像行一样直接使用df[1:4]
,这是因为当直接使用[]获取时,若给定的索引为整数索引则按行取,为字符索引则按列取。当使用默认的整数索引时,是不能直接通过整数取,这是我们只需要先获取列索引名,再指定具体的列索引即可。若为字符索引时则可直接获取。
在按行或列的基础上将list作为索引即可取不连续的块。
print(f'第1,3,4行\n{df.loc[[1,3,4]]}')
print(f'第1,3,4列\n{df[[1,3,4]]}')
print(f'第(2,3)*(1,3,4)形成的交叉块\n{df.iloc[[2,3],[1,3,4]]}')
'''
第1,3,4行
0 1 2 3 4
1 6 7 8 9 10
3 16 17 18 19 20
4 21 22 23 24 25
第1,3,4列
1 3 4
0 2 4 5
1 7 9 10
2 12 14 15
3 17 19 20
4 22 24 25
第(2,3)*(1,3,4)形成的交叉块
1 3 4
2 12 14 15
3 17 19 20
'''
ix混合索引的方式将被遗弃,本文就不再叙述。