pandas的数据格式最常用的为Series和DataFrame两种类型,以下分别对两种类型的索引和数据选取方式进行了总结整理。

1、Series格式

Series格式很简单,只有两列,一列索引,一列为值,按照是否自定义索引类型,分为两种情况进行讨论:

1)默认索引类型,即由系统自动添加从0开始按序增加的索引

import pandas as pd

ser=pd.Series(['Ohio', 'Colorado', 'Utah', 'New York'])

#选取表的第一行(索引为0)内容
data1=ser[0]
print(data1)
'''
结果:
Ohio
'''

#选取表从第一行(索引为0)到第二行(索引为1)的内容,注意ser[0:2]表示从第0到第1的切片,遵循左闭右开原则
data2=ser[0:2]
print(data2)
''' 结果:
0        Ohio
1    Colorado
dtype: object
'''

2)自定义索引类型

import pandas as pd

ser=pd.Series(['Ohio', 'Colorado', 'Utah', 'New York'],index=['a', 'b', 'c', 'd'])

#采用自定义的索引类型
print(ser['b'])
''' 结果:
Colorado
'''

#选取#ser['b']到ser['d']内容,注意,结果将包括ser['d']的内容,与数字索引的左闭右开有区别,是左闭右闭
print(ser['b':'d'])
''' 结果:
b    Colorado
c        Utah
d    New York
dtype: object
'''

##选取表从第一行到第二行的内容,注意ser[0:2]表示从第0到第1的切片,左闭右开
print(ser[0:2])
''' 结果:
a        Ohio
b    Colorado
dtype: object
'''

2、DataFrame格式

DataFrame格式比Series格式稍微复杂,其可包含一列索引和多个数据列,分为以下几种情况进行讨论

1)默认索引类型,即由系统自动添加从0开始按序增加的索引

#-*- coding:utf-8 -*
import pandas as pd

#创建一个传统的字典格式数据
data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],
        'year': [2000, 2001, 2002, 2001, 2002, 2003],
        'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}

#将字典转换为DataFrame格式,行索引为默认的数字序号格式,列索引则为['state','year','pop']。以下输出整个字典内容
df = pd.DataFrame(data)
print(df)
'''
结果:
    state  year  pop
0    Ohio  2000  1.5
1    Ohio  2001  1.7
2    Ohio  2002  3.6
3  Nevada  2001  2.4
4  Nevada  2002  2.9
5  Nevada  2003  3.2
'''

#选取列,直接索引就行
#输出表的'state'列内容
data1=df['state']
print(data1)
'''
结果:
0      Ohio
1      Ohio
2      Ohio
3    Nevada
4    Nevada
5    Nevada
Name: state, dtype: object
'''

#输出表的state列和pop列内容,注意要用列索引列表的方式,即在外加方括号
# 也可以用切片方式,如df[['state':'pop']],将输出包含'state'、'year'、'pop'三列的内容
data2=df[['state','pop']]
print(data2)
'''
结果:
    state  pop
0    Ohio  1.5
1    Ohio  1.7
2    Ohio  3.6
3  Nevada  2.4
4  Nevada  2.9
5  Nevada  3.2
'''

#选取行内容,需要用loc指令
#输出表的第一行(索引为0)内容,采用loc指令
data3=df.loc[0]
print(data3)
'''
结果:
state    Ohio
year     2000
pop       1.5
Name: 0, dtype: object
'''
#输出表从第一行(索引为0)到第三行(索引为2)的内容,注意包含df.loc[2]的内容,左闭右闭,与Series的索引不同
data4=df.loc[0:2]
print(data4)
'''
结果:
  state  year  pop
0  Ohio  2000  1.5
1  Ohio  2001  1.7
2  Ohio  2002  3.6
'''
#输出给定行和列对应的数据,需要用loc指令,注意,不能直接用给定行和列数据进行索引
data5=df[0,'pop'] #错误,不能输出
data6=df.loc[0,'pop'] #输出df表中第1行(索引0)'pop'列数据
print(data6)
''' 
结果: 1.5
'''
data7=df.loc[0:1,'state':'pop'] #也可以用切片方式
print(data7)
'''
结果:
  state  pop
a  Ohio  1.5
b  Ohio  1.7
'''

#用iloc方式,用数字作为索引,可以在不清楚列的索引类型下使用
data8=df.iloc[1,2]  #选取第2行(行索引为1)第3列(列索引为2)内容
print(data8)
'''
结果:1.7
'''
data9=df.iloc[[0,1],[1,2]]  #选取第2行(行索引为1)第3列(列索引为2)内容
print(data9)    #选取第1、2行(行索引为0、1)第2、3列(列索引为1、2)内容
'''
结果:
   year  pop
0  2000  1.5
1  2001  1.7
'''

#还有一种特殊方式,用切片方式选取行,但是注意只能用切片方式,用指定行标来索引不行
data10=df[0:2]  #选取第1行(索引为0)到第3行(索引为2),遵循左闭右闭原则
print(data10)
'''
结果:
  state  year  pop
0  Ohio  2000  1.5
1  Ohio  2001  1.7
'''
data11=df[2]    #不能这样索引,会出现错误
'''
结果:错误
'''

 

2)自定义索引

#-*- coding:utf-8 -*
import pandas as pd

#创建一个传统的字典格式数据
data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],
        'year': [2000, 2001, 2002, 2001, 2002, 2003],
        'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}

#将字典转换为DataFrame格式,索引为默认的数字序号格式,输出整个DataFrame表内容
df = pd.DataFrame(data,index=['a', 'b', 'c', 'd', 'e', 'f'])
print(df)
'''
结果:
    state  year  pop
a    Ohio  2000  1.5
b    Ohio  2001  1.7
c    Ohio  2002  3.6
d  Nevada  2001  2.4
e  Nevada  2002  2.9
f  Nevada  2003  3.2
'''

#输出表的第一行(索引为'a')内容,用loc指令
data1=df.loc['a']
print(data1)
'''
结果:
state    Ohio
year     2000
pop       1.5
Name: a, dtype: object
'''
#输出表从第一行(索引为'a')到第三行(索引为'c')的内容,注意loc['a':'c']表示从编号'a'到'c'的切片,包含'c'
data2=df.loc['a':'c']
print(data2)
'''
结果:
  state  year  pop
a  Ohio  2000  1.5
b  Ohio  2001  1.7
c  Ohio  2002  3.6
'''

#输出给定行和列对应的数据,需要用loc指令,注意,不能直接用给定行和列数据进行索引

data4=df.loc['a','pop'] #输出df表中'a'行'pop'列数据
print(data4)
'''
结果:1.5
'''
data5=df.loc['a':'b','state':'pop'] #也可以用切片方式
print(data5)
'''
结果:
  state  pop
a  Ohio  1.5
b  Ohio  1.7
'''

#用切片方式选取行,但是注意只能用切片方式,用指定行标来索引不行
data6=df['a':'c']  #选取第a行到第c行数据,遵循左闭右闭原则
print(data6)
'''
结果:
  state  year  pop
0  Ohio  2000  1.5
1  Ohio  2001  1.7
'''
data7=df['a']    #不能这样索引,会出现错误
'''
结果:错误
'''
其他方式如通过iloc进行索引等,使用方法和2.1)节所述一致