Pandas数据帧记录过滤符号是如何实现的?

时间:2017-08-10 15:22:48

标签: python pandas dataframe

我正在完成一个Pandas教程,我看到的代码如下:

from pandas import read_csv
dataset = read_csv('customers.csv')

# remove customers older than 95
dataset = dataset[dataset.age < 95]

我想知道这个操作是什么,以及它是如何在Python中实现的?看起来数据框可以接受字母表示法(dataset['age']),以及这种表示法。

1 个答案:

答案 0 :(得分:1)

基本上,dataset.age < 95将使用Series的索引生成dataset,并且值将是与该索引相关联的值与< 95相比的结果。如果使用此结果选择数据框中的某些内容,则会返回系列中索引的值为True的行。

例如:

In [1]: df = pd.DataFrame({'a': list(range(5)), 'b': list(range(5, 10))})

In [2]: df
Out[2]: 
   a  b
0  0  5
1  1  6
2  2  7
3  3  8
4  4  9

In [3]: type(df.a < 3)
Out[3]: pandas.core.series.Series

In [4]: df.a < 3
Out[4]: 
0     True
1     True
2     True
3    False
4    False
Name: a, dtype: bool

两种符号df.column_namedf['column_name']都是有效且等效的,但在这种情况下使用df.column name时无法使用df['column name']。通常,当df.column_name是有效标识符时,可以使用column_name,并且它不会与为type(df)定义的任何方法或字段具有相同的名称。