第三章 索引
一、索引器
1、表的列索引
通过类似字典标记的方式或属性的方式,可以将DataFramed的列获取为一个Series。
- 只取出一列
frame2['state']
,列名中不包含空格时,可以直接用.loc
取出:frame2.state
- 取出多个列 则可以通过
[列名组成的列表]
,得到一个DataFrame
2、序列的行索引
以字符串为索引的Series (也可以理解为必须给索引的值的显示索引)
- 只取出单个索引 使用
[item]
,得到该item对应的所有值 - 取出多个索引 使用
[item的列表]
- 取出某两个索引之间的元素 (索引唯一出现)这里的切片会包含左右两个端点值
s['c': 'b': -2]
以整数为索引的Series(不给出索引的值,会自动生成整数)
- 取出单个索引或多个索引 使用
[int]
和[int_list]
,则可以取出对应索引元素的值 - 取出某两个索引之间的元素 这里的整数切片不包含右端点
3、loc索引器
对DataFrame的行进行选取,一种是基于元素的loc索引器。
以函数为索引
In [42]: def condition(x):
....: condition_1_1 = x.School == 'Fudan University'
....: condition_1_2 = x.Grade == 'Senior'
....: condition_1_3 = x.Weight > 70
....: condition_1 = condition_1_1 & condition_1_2 & condition_1_3
....: condition_2_1 = x.School == 'Peking University'
....: condition_2_2 = x.Grade == 'Senior'
....: condition_2_3 = x.Weight > 80
....: condition_2 = condition_2_1 & (~condition_2_2) & condition_2_3
....: result = condition_1 | condition_2
....: return result
....:
In [43]: df_demo.loc[condition]
Out[43]:
School Grade Gender Weight Transfer
Name
Qiang Han Peking University Freshman Male 87.0 N
Chengpeng Zhou Fudan University Senior Male 81.0 N
Changpeng Zhao Peking University Freshman Male 83.0 N
Chengpeng Qian Fudan University Senior Male 73.0 Y
这里主要记录一下,在进行赋值操作时,容易出现的一种报错及解决方案。
# 之前自己使用过程中的问题
cases_over_10000_china = cases_china_copy[cases_china_copy.cases > 10000