import pandas as pd
import numpy as np
a=np.array([['北京','北方','一线','非沿海'],['杭州','南方','二线','非沿海'],['深圳','南方','一线','沿海'],['烟台','北方','三线','沿海']])
df=pd.DataFrame(a,index=['一','二','三','四'],columns=['城市','地理','级别','是否沿海'])
城市 地理 级别 是否沿海
一 北京 北方 一线 非沿海
二 杭州 南方 二线 非沿海
三 深圳 南方 一线 沿海
四 烟台 北方 三线 沿海
loc标签是轴标签,也就是我们的索引名,使用也非常简单
df.loc['二']
城市 杭州
地理 南方
级别 二线
是否沿海 非沿海
Name: 二, dtype: object
iloc为整数标签,类似我们使用的元组列表的索引。比如我们想选择第二行的数据,第二行的索引则为1.
df.iloc[1]
城市 杭州
地理 南方
级别 二线
是否沿海 非沿海
Name: 二, dtype: object
如果我们知道列索引,那么选择某一列则变得十分简单
df['级别']
一 一线
二 二线
三 一线
四 三线
Name: 级别, dtype: object
正如我们上述使用iloc的方法,我们只需传入行或者列的索引即可。其实iloc的中括号里可以输入两个参数。前面为行,后面为列中间用逗号隔开。(如果省略了逗号,则默认取选择行)
比如现在我们想选择第二列,我们只需在逗号钱输入: 代表所有的行,后面则输入1代表第二列
df.iloc[:, 1]
一 北方
二 南方
三 南方
四 北方
Name: 地理, dtype: object
和iloc的使用相似,只不过在数据筛选中我们不再使用行整数索引,而是具体的索引值。
df.loc[:, '是否沿海']
一 非沿海
二 非沿海
三 沿海
四 沿海
Name: 是否沿海, dtype: object
其实loc与iloc是dataframe中选择数据最高效的方式,他的功能也十分强大。我们可以随意组合。
比如我们现在选择第二行的中间两列
df.iloc[1,1:3]
地理 南方
级别 二线
Name: 二, dtype: object
当然我们也可以不使用整数索引
df.loc['二':,'地理':'级别']
地理 级别
二 南方 二线
三 南方 一线
四 北方 三线
比如我们想选择第二到三行的第二列和第三列
df.iloc[2:4:, 2:4]
级别 是否沿海
三 一线 沿海
四 三线 沿海
同样十分简单,通过loc使用效果相同,这里不过多描述
df.iloc[:,2:4]
级别 是否沿海
一 一线 非沿海
二 二线 非沿海
三 一线 沿海
四 三线 沿海
城市 地理 级别 是否沿海
二 杭州 南方 二线 非沿海
三 深圳 南方 一线 沿海
如果把dataframe看做一个表格,这里可以看成获得表格里某个单元格的值
iat即为整数标签
df.iat[2,2]
'一线'
at即为具体的索引值去获取
df.at['三','级别']
'一线'