Pandas索引方法介绍

该文章使用IPython生成的md文件直接导入

import pandas as pd
T_data
PassengerId Survived Pclass Name Sex Age
A 2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th… female 38.0
B 3 1 3 Heikkinen, Miss. Laina female 26.0
C 4 1 1 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0
D 5 0 3 Allen, Mr. William Henry male 35.0
E 6 0 3 Moran, Mr. James male NaN
F 7 0 1 McCarthy, Mr. Timothy J male 54.0
G 8 0 3 Palsson, Master. Gosta Leonard male 2.0
H 9 1 3 Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg) female 27.0
I 10 1 2 Nasser, Mrs. Nicholas (Adele Achem) female 14.0
#使用[]的方法进行索引
#[]方法对于Data.Frame格式的数据是通过列名进行筛选的,即Data.Frame.columns
T_data.columns
Index([u'PassengerId', u'Survived', u'Pclass', u'Name', u'Sex', u'Age'], dtype='object')
T_data["Name"]
A    Cumings, Mrs. John Bradley (Florence Briggs Th...
B                               Heikkinen, Miss. Laina
C         Futrelle, Mrs. Jacques Heath (Lily May Peel)
D                             Allen, Mr. William Henry
E                                     Moran, Mr. James
F                              McCarthy, Mr. Timothy J
G                       Palsson, Master. Gosta Leonard
H    Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg)
I                  Nasser, Mrs. Nicholas (Adele Achem)
Name: Name, dtype: object
#对于多列数据的筛选,可以传入一个包含多个列名的列表
T_data[["Name","Sex"]]
Name Sex
A Cumings, Mrs. John Bradley (Florence Briggs Th… female
B Heikkinen, Miss. Laina female
C Futrelle, Mrs. Jacques Heath (Lily May Peel) female
D Allen, Mr. William Henry male
E Moran, Mr. James male
F McCarthy, Mr. Timothy J male
G Palsson, Master. Gosta Leonard male
H Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg) female
I Nasser, Mrs. Nicholas (Adele Achem) female
#同时,我们也可以向[]传入行下标的形式实现行的选择
T_data[0:5]
PassengerId Survived Pclass Name Sex Age
A 2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th… female 38.0
B 3 1 3 Heikkinen, Miss. Laina female 26.0
C 4 1 1 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0
D 5 0 3 Allen, Mr. William Henry male 35.0
E 6 0 3 Moran, Mr. James male NaN
#所以,如何要通过[]筛选指定的行和列,可以采用如下两种方式
#第一种方式,先选择列,后选择行
T_data[["Name","Sex"]][0:5]
Name Sex
A Cumings, Mrs. John Bradley (Florence Briggs Th… female
B Heikkinen, Miss. Laina female
C Futrelle, Mrs. Jacques Heath (Lily May Peel) female
D Allen, Mr. William Henry male
E Moran, Mr. James male
#第二种方式先选择行,后选择列
T_data[0:5][["Name","Sex"]]
Name Sex
A Cumings, Mrs. John Bradley (Florence Briggs Th… female
B Heikkinen, Miss. Laina female
C Futrelle, Mrs. Jacques Heath (Lily May Peel) female
D Allen, Mr. William Henry male
E Moran, Mr. James male
#注意到上述两种选择方式中,括号顺序的变化并未影响选择的结果
#这是因为,在[]这种选择方式下,默认的整数索引就是行下标,而字符串索引则是列名
#同样可以这样理解,如果想要通过[]方式选择制定的行和列,那么行的选择只能用行下标,列的选择只能使用字符串类型的列名
#如果你的列名是数字,那么很抱歉,你便无法使用[]方法来筛选你想要的列了,因为[]方法会认为你提供的是行的下标索引
#事实上,采用[]方法实现行的索引时,仍然有一个很不方便的问题,那边是下标索引智能通过序列的形式传入,无法通过传入一个下标列表实现对行的索引
#使用[]方法进行某一列的选择,或者某几行的选择时,有自己的方便之处,但仍然存在很大的局限性,例如无法通过index行的名称实现行的筛选,
#同样,无法通过列的下标实现列的索引,但别担心,有一种或者说是两种方法可以实现行和列的快速选择
#这两种方法将通过下标的索引和通过名称的索引两种索引方式进行划分
#基于下标的索引方法为iloc[,]需要传入两个参数,第一个参数为行的下标,第二个参数为列的下标,
#注意,如果不需要对列进行筛选,可以不传入第二个参数,
#但如果不准备对行筛选,仅筛选列,则需要设置行为全选,即 ":"这种方式
T_data.iloc[0:2,0:2]
PassengerId Survived
A 2 1
B 3 1
T_data.iloc[0:2]
PassengerId Survived Pclass Name Sex Age
A 2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th… female 38.0
B 3 1 3 Heikkinen, Miss. Laina female 26.0
T_data.iloc[:,0:2]
PassengerId Survived
A 2 1
B 3 1
C 4 1
D 5 0
E 6 0
F 7 0
G 8 0
H 9 1
I 10 1
#传入索引的下标列表
T_data.iloc[[1,3],[2,5]]
Pclass Age
B 3 26.0
D 3 35.0
#第二种方式与第一种方式对应,是基于行列名称的索引
#注意到,对名称进行切片的时候,最后一项是包含在里面的
T_data.loc["A":"E","Survived":"Name"]
Survived Pclass Name
A 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th…
B 1 3 Heikkinen, Miss. Laina
C 1 1 Futrelle, Mrs. Jacques Heath (Lily May Peel)
D 0 3 Allen, Mr. William Henry
E 0 3 Moran, Mr. James
T_data.loc["A":"E"]
PassengerId Survived Pclass Name Sex Age
A 2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th… female 38.0
B 3 1 3 Heikkinen, Miss. Laina female 26.0
C 4 1 1 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0
D 5 0 3 Allen, Mr. William Henry male 35.0
E 6 0 3 Moran, Mr. James male NaN
T_data.loc[:,"Survived":"Name"]
Survived Pclass Name
A 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th…
B 1 3 Heikkinen, Miss. Laina
C 1 1 Futrelle, Mrs. Jacques Heath (Lily May Peel)
D 0 3 Allen, Mr. William Henry
E 0 3 Moran, Mr. James
F 0 1 McCarthy, Mr. Timothy J
G 0 3 Palsson, Master. Gosta Leonard
H 1 3 Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg)
I 1 2 Nasser, Mrs. Nicholas (Adele Achem)
T_data.loc[["A","C","F"],["Survived","Age"]]
Survived Age
A 1 38.0
C 1 35.0
F 0 54.0

猜你喜欢

转载自blog.csdn.net/zhangxiaojiakele/article/details/78188042