pandas DataFrame数据筛选和切片
Posted aro7
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pandas DataFrame数据筛选和切片相关的知识,希望对你有一定的参考价值。
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]
以上是关于pandas DataFrame数据筛选和切片的主要内容,如果未能解决你的问题,请参考以下文章
Pandas笔记 · DataFrame.loc()和DataFrame.iloc()
Pandas笔记 · DataFrame.loc()和DataFrame.iloc()
pandas 用 .loc[,]=value 筛选并原地赋值回原来的 DataFrame
pandas通过DatetimeProperties对象获取日期对象是否是所在年份的最后一天(is year end)筛选dataframe数据中日期对象是所在年份最后一天的数据行