pandas DataFrame数据筛选和切片

时间:2022-11-21 23:00:41

DataFrame数据筛选——loc,iloc,ix,at,iat

条件筛选

单条件筛选

选取col1列的取值大于n的记录: data[data['col1']>n]
筛选col1列的取值大于n的记录,但是显示col2,col3列的值: data[['col2','col3']][data['col1']>n]
选择特定行:使用isin函数根据特定值筛选记录。筛选col1值等于list中元素的记录: data[data.col1.isin(list)]
 
 

多条件筛选

可以使用&(并)与| (或)操作符或者特定的函数实现多条件筛选
使用&筛选col1列的取值大于n,col2列的取值大于m的记录:data[(data['col1'] > n) & (data['col2'] > m)]
使用numpy的logical_and函数完成同样的功能:data[np.logical_and(data['col1']> n,data['col2']>m)]
 
 

索引筛选

切片操作

使用切片操作选择特定的行: data[n:m]
传入列名选择特定的列: data[['col1','col2']]
 

loc函数

当每列已有column name时,用 data ['col1'] 就能选取出一整列数据。如果你知道column names 和index,可以选择 .loc同时进行行列选择: data.loc[index,'colum_names']
 

iloc函数

使用方法同loc函数,但是不再输入列名,而是输入列的index: data.iloc[row_index,col_index]

 

ix函数

ix的功能更加强大,参数既可以是索引,也可以是名称,相当于,loc和iloc的合体。需要注意的是在使用的时候需要统一,在行选择时同时出现索引和名称, 同样在同行选择时同时出现索引和名称: data.ix[n:m,['col1','col2']]
但是在最新的版本中,ix函数不建议使用
 
 

at函数

根据指定行index及列label,快速定位DataFrame的元素,选择列时仅支持列名:data.at[row_index,'column_names']
 
 

iat函数

与at的功能相同,只使用索引参数:data.iat[row_index,column_index]