Python DataFrame是如何产生这种结果的?
步骤1:显示前10行:Python DataFrame是如何产生这种结果的?,python,pandas,Python,Pandas,步骤1:显示前10行: In [13]: data[:10] Out[13]: admit gre gpa rank 0 0 380 3.61 3 1 1 660 3.67 3 2 1 800 4.00 1 3 1 640 3.19 4 4 0 520 2.93 4 5 1 760 3.00 2 6 1 560 2.98 1 7
In [13]: data[:10]
Out[13]:
admit gre gpa rank
0 0 380 3.61 3
1 1 660 3.67 3
2 1 800 4.00 1
3 1 640 3.19 4
4 0 520 2.93 4
5 1 760 3.00 2
6 1 560 2.98 1
7 0 400 3.08 2
8 1 540 3.39 3
9 0 700 3.92 2
步骤2:列出排名为1的所有行
In [15]: data["rank"]==1
Out[15]:
0 False
1 False
2 True
3 False
4 False
5 False
6 True
7 False
8 False
9 False
10 False
步骤3:生成秩=1的行列表
In [16]: data[data["rank"]==1]
Out[16]:
admit gre gpa rank
2 1 800 4.00 1
6 1 560 2.98 1
11 0 440 3.22 1
12 1 760 4.00 1
14 1 700 4.00 1
19 1 540 3.81 1
25 1 800 3.66 1
26 1 620 3.61 1
29 0 520 3.29 1
我不明白第三步。为什么data[boolean]会生成秩=1的实际行 因为它就像一个面具。
检查此项
数据[布尔值]
其中数据
是一个数据帧,布尔值
是一些布尔值序列。这意味着:将布尔值
索引与数据
索引对齐,并选择数据
值,其中对应的布尔值
为真
。如果boolean
有索引,则必须一一匹配,如果没有,则必须具有相同的长度
例如,您可以使用向量[True,False,…,False]
>>> data[[True] + [False] * 9]
admit gre gpa rank
0 0 380 3.61 3
如果布尔值
的长度不相同,例如
>>> data[[True] + [False] * 10]
你得到一个
ValueError: Item wrong length 11 instead of 10.
如果布尔值
的索引不匹配,则会出现索引错误
>>> data[(data["rank"] == 1)[:9]]
IndexingError: Unalignable boolean Series provided as indexer
如果更改索引名
>>> (data["rank"] == 1).add_prefix('_')
_0 False
_1 False
_2 True
_3 False
_4 False
_5 False
_6 True
_7 False
_8 False
_9 False
Name: rank, dtype: bool
您还将得到一个错误:
>>> data[(data["rank"].add_prefix('_') == 1)]
IndexingError: Unalignable boolean Series provided as indexer
这被称为。还有基于、data.loc[]
(可以是数字、字符串或日期)或绝对、data.iloc[]
的索引,以及用于这两者的传统方法data.ix[]