Pandas 中根据列值,选取DataFrame数据,并获取行索引号列表
一 . 根据列条件,获取行索引号并转成列表
import pandas as pd df = pd.DataFrame({'BoolCol': [1, 2, 3, 3, 4],'attr': [22, 33, 22, 44, 66]}, index=[10,20,30,40,50]) print(df) a = df[(df.BoolCol==3)&(df.attr==22)].index.tolist() print(a)
查找 BoolCol = 3 和 attr = 22 的数据
# 结果 BoolCol attr 10 1 22 20 2 33 30 3 22 40 3 44 50 4 66 [30]
注意:
df[(df.BoolCol==3)&(df.attr==22)].index返回的是index对象列表,需转换为普通列表格式时用tolist()方法
二 . 根据列条件,选取dataframe数据框中的数据
# 选取等于某些值的行记录 用 == df.loc[df['column_name'] == some_value] # 选取某列是否是某一类型的数值 用 isin df.loc[df['column_name'].isin(some_values)] # 多种条件的选取 用 & df.loc[(df['column'] == some_value) & df['other_column'].isin(some_values)] # 选取不等于某些值的行记录 用 != df.loc[df['column_name'] != some_value] # isin返回一系列的数值,如果要选择不符合这个条件的数值使用~ df.loc[~df['column_name'].isin(some_values)]