对DataFrame类型做操作的时候,因为有很多方法来实现查询与切片,所以很容易忘记或者搞混淆。而查询和切片有些操作可以“互用”,更是让人不知所措。现在分享一下我的学习总结:
查询其实很简单,也很容易记,就两种方式:
①df[列名][行名]--------------------------------单列
②df[[列名,...]][行索引位置]------------------多列
我的理解为查询是以列优先的(记住,后面有呼应)
切片,有loc()方法和iloc()方法,
loc()方法是针对DataFrame索引名称的切片方法
iloc()方法接收的必须是行索引和列索引的位置
实不相瞒,这两个我每次用的时候都没记牢,然后用着用着感觉又有点像?总不能老是懵懵懂懂的,所以今天也特地小结了一下:
loc():
df.loc[行索引名称or条件,列名]-----------------------单行
df.loc[行名][列名]----------------------------------------单行
df.loc[[行名,...]][[列名,...]]------------------------------多行
df.loc[[行名,...]][:1]---------------------------------------多行
像不像?以列为优先的查询?hh,我感觉loc()和iloc()是以行优先的切片
tips:这里[:1],也可以是其他的列切片,但不能是单个位置索引
df.loc[1:2,列名]------------------------------------------多行单列
df.loc[1:2,[列名,...]]--------------------------------------多行多列
iloc():
df.iloc[行索引位置,列索引位置]----------------------单行
df.iloc[1:2,[1,3]]-----------------------------------------多行多列
df.iloc[:][[列名,...]]--------------------------------------多行多列
等等等等,我感觉混搭的方式真的很多,我只列出几个,方便使用,看了也能有些印象。当然,大家也可以多多尝试其他的。
补充一下:对于多行,还有head()和tail()方法