dateframe取子集总结

1.获取列

df['country']  
df[['country','year']]
#不能通过df[0]获取第一列,如果想通过列的索引位置获取列需要用到loc

#获取所有列名
df.columns    #得到一个Index类型
list(df.columns)#将得到的Index类型转成列表

2.获取行

df.loc[0]
df.loc['第一行名']

df.loc[[0,2,4]]
df.loc[['第1行名','第3行名','第5行名']]

df.loc[[::2]] #通过切片语法连续选择


#用法和loc类似iloc只能是纯索引,loc可以是行号或行名,loc不是索引取值所以不能loc[-1]
df.iloc[0]
df.iloc[-1]

3.混合取值

# loc和iloc的高级用法loc[,] 如果中间用一个逗号分隔之后,loc就不不积极只能去行了,而是取区域,逗号前面是取行,逗号后面是取列.
#由于在df中想取多个值需要传入一个列表,和原来的[]搭配起来看起来就很怪,如果恰巧碰上取一片区域看起来就更奇怪.

df.loc[[0,2,4],['第1列名','第2列名','第3列名']]

#搭配切片语法可以使用法看起来易懂一些,如通过loc和iloc获取第一列
df.loc[:,'第1列名']
df.iloc[:,0]
#错误用法 df.loc[:,0]

4.使用布尔值获取数据子集,这是条件筛选的基本实现原理

df[[True,False,True,False]]
df[df['age']>df['age'].mean()]
#比较时pandas内部使用广播实现,并返回一组布尔值

5.取值结果总结

dateframe取一列或一行得到series
df或series取index得到index类型数据
df或series取value得到array类型数据
df和series取值具体到单个值时得到具体值,如果一个df或一个series只有一个值,通过取一列,一行,value都不能得到那个具体值,使用df.iloc[0,0]可以去到值.
在df或series中取值时注意数据格式,int64和float64是不能被json化的.
posted @ 2021-02-23 16:51  Franciszw  阅读(386)  评论(0编辑  收藏  举报