原文:https://blog.csdn.net/luanpeng825485697/article/details/80533003
选择/切片
df[‘column_name’] ,df[row_start_index, row_end_index] 选取指定整列数据:
df['name'] # 选取一列,成一个series
df[['name']] # 选取一列,成为一个dataframe
df[['name','gender']] #选取多列,多列名字要放在list里
df[0:] #第0行及之后的行,相当于df的全部数据,注意冒号是必须的
df[:2] #第2行之前的数据(不含第2行)
df[0:1] #第0行
df[1:3] #第1行到第2行(不含第3行)
df[-1:] #最后一行
df[-3:-1] #倒数第3行到倒数第1行(不包含最后1行即倒数第1行)
loc,在知道列名字的情况下,df.loc[index,column] 选取指定行,列的数据:
# df.loc[index, column_name],选取指定行和列的数据
df.loc[0,'name'] # 'Snow'
df.loc[0:2, ['name','age']] #选取第0行到第2行,name列和age列的数据, 注意这里的行选取是包含下标的。
df.loc[[2,3],['name','age']] #选取指定的第2行和第3行,name和age列的数据
df.loc[df['gender']=='M','name'] #选取gender列是M,name列的数据
df.loc[df['gender']=='M',['name','age']] #选取gender列是M,name和age列的数据
cc.loc[[n]]:取第n行的数据
cc.loc[[n,m]]:取第n行m行的数据
iloc,在column name特别长或者index是时间序列等各种不方便输入的情况下,可以用iloc (i = index), iloc完全用数字来定位 iloc[row_index, column_index]
df.iloc[0,0] #第0行第0列的数据,'Snow'
df.iloc[1,2] #第1行第2列的数据,32
df.iloc[[1,3],0:2] #第1行和第3行,从第0列到第2列(不包含第2列)的数据
df.iloc[1:3,[1,2] #第1行到第3行(不包含第3行),第1列和第2列的数据
索引汇总
pandas的索引函数主要有三种:
loc 标签索引,行和列的名称
iloc 整型索引(绝对位置索引),绝对意义上的几行几列,起始索引为0
ix 是 iloc 和 loc的合体
at是loc的快捷方式
iat是iloc的快捷方式# 选择单独的一列,返回 Serires,与 df.A 效果相当。
# 选择单独的一列,返回 Serires,与 df.A 效果相当。
df['A']
# 位置切片
df[0:3]
# 索引切片
df['20130102':'20130104']
# 通过标签选择
df.loc[dates[0]]
# 对多个轴同时通过标签进行选择
df.loc[:,['A','B']]
# 获得某一个单元的数据
df.loc[dates[0],'A']
# 或者
df.at[dates[0],'A']# 速度更快的做法
# 通过位置进行选择
df.iloc[3]
# 切片
df.iloc[3:5,0:2]
# 列表选择
df.iloc[[1,2,4],[0,2]]
# 获得某一个单元的数据
df.iloc[1,1]
# 或者
df.iat[1,1]# 更快的做法
# 布尔索引
df[df.A > 0]
# 获得大于零的项的数值
df[df > 0]
# isin 过滤
df2[df2['E'].isin(['two','four'])]
# 在 pandas 中使用 np.nan 作为缺省项的值。