DataFrame对象是一个由行列组成的表。DataFrame中行由columns组成,列由index组成,它们都是Index对象。它的值还是numpy数组。

  1. import pandas as pd
  2. data = {'name':['ming', 'hong', 'gang', 'tian'], 'age':[12, 13, 14, 20], 'score':[80.3, 88.2, 90, 99.9]}
  3. df1 = pd.DataFrame(data,index=range(1,5))
  4. print(df1)

dateframe 包括行和列的标签
name age score
1 ming 12 80.3
2 hong 13 88.2
3 gang 14 90.0
4 tian 20 99.9

  1. print(df1.index) # RangeIndex(start=1, stop=5, step=1)
  2. print(df1.columns) # Index(['name', 'age', 'score'], dtype='object')
  3. print(df1.values)

df1.values 不包括行和列标签
[[‘ming’ 12 80.3]
[‘hong’ 13 88.2]
[‘gang’ 14 90.0]
[‘tian’ 20 99.9]]

DataFrame对象进行索引

1:使用columns的值对列进行索引

直接使用columns中的值进行索引,得到的是一列或者是多列的值

  1. print(df1['name'])

1 ming
2 hong
3 gang
4 tian
Name: name, dtype: object

  1. print(df1[['name','age']])

name age
1 ming 12
2 hong 13
3 gang 14
4 tian 20
注意:不可以直接使用下标对列进行索引,除非该columns当中包含该值。如下面的操作是错误的

  1. print(df1[0]) # 结果: 错误

2:切片或者布尔Series对行进行索引

使用切片索引,或者布尔类型Series进行索引:

  1. print(df1[0:3])

name age score
1 ming 12 80.3
2 hong 13 88.2
3 gang 14 90.0

  1. print(df1[ df1['age'] > 13 ])

name age score
3 gang 14 90.0
4 tian 20 99.9

3:使用loc和iloc进行索引

本质上loc是用index和columns当中的值进行索引,而iloc是不理会index和columns当中的值的,永远都是用从0开始的下标进行索引。所以当你搞懂这句话的时候,下面的索引就会变得非常简单:

  1. print(df1.loc[3]) # 返回行索引为 3 的数据

name gang
age 14
score 90
Name: 3, dtype: object

  1. print(df1.loc[:,'age']) # 返回列索引为age的数据

1 12
2 13
3 14
4 20
Name: age, dtype: int64

  1. print(df1.iloc[3]) # iloc不理会index和columns中的值,从0开始的下标进行索引

name tian
age 20
score 99.9
Name: 4, dtype: object

  1. print(df1.iloc[:,1]) # 返回列索引为 1 的数据

1 12
2 13
3 14
4 20
Name: age, dtype: int64

转载自三味书屋