Panda的学习之路(2)——pandas选择数据

首先定义panda

dates=pd.date_range('20130101',periods=6)
# print(dates)
df=pd.DataFrame(np.arange(24).reshape(6,4),index=dates,columns=['a','b','c','d'])
print(df)
             a   b   c   d
2013-01-01   0   1   2   3
2013-01-02   4   5   6   7
2013-01-03   8   9  10  11
2013-01-04  12  13  14  15
2013-01-05  16  17  18  19
2013-01-06  20  21  22  23

一、选择特定的某一列

# 选择某一列 选列比较简单
print("选择具体的某一列")
print(df['a'])
#print(df.a)#这两种表达方式一致

结果:

选择具体的某一列
2013-01-01     0
2013-01-02     4
2013-01-03     8
2013-01-04    12
2013-01-05    16
2013-01-06    20

二、选择特定的几行

2.1通过仿照array的形式来选择

print("选择特定的几行 0~1")
print(df[0:1])
print("选择20130102 到 20130104 行")
print(df['20130102':'20130104'])

结果:

选择特定的几行 0~1
            a  b  c  d
2013-01-01  0  1  2  3
选择20130102 到 20130104 行
             a   b   c   d
2013-01-02   4   5   6   7
2013-01-03   8   9  10  11
2013-01-04  12  13  14  15

2.2按照标签来选择(其实应该说是按照index来选择) 不管是行还是列 都必须是lable

# 按标签来选择
print("按照特定的标签进行")
print(df.loc['20130102'])#loc是根据index来选择对应的行 也就是a行还是b行
# 把ab的数据全部弄出来
print("特定列给选出来")
print(df.loc[:,['a','b']])
print("把某一行的特定列给选出来")
print(df.loc['20130102',['a','b']])

结果:

按照特定的标签进行筛选
a    4
b    5
c    6
d    7
Name: 2013-01-02 00:00:00, dtype: int32
特定列给选出来
             a   b
2013-01-01   0   1
2013-01-02   4   5
2013-01-03   8   9
2013-01-04  12  13
2013-01-05  16  17
2013-01-06  20  21
把某一行的特定列给选出来
a    4
b    5
Name: 2013-01-02 00:00:00, dtype: int32

2.3按第几行(第几列)来进行选择     不管行列都是数字

# 按第几行来选择
print(df.iloc[3])#第三行的数据 iloc是根据数字 也就是第几行来决定索引
print(df.iloc[3:5,1:3])#三到5行 1:3 列

结果:

a    12
b    13
c    14
d    15
Name: 2013-01-04 00:00:00, dtype: int32
             b   c
2013-01-04  13  14
2013-01-05  17  18

2.4把lable和数字一起结合起来    就是又可以用数字 又可以用lable

# 把lable和第几位一起来筛选
print(df.ix[0:3,['a','c']])
print(df.ix['20130101':'20130105',['a','c']])

结果:

            a   c
2013-01-01  0   2
2013-01-02  4   6
2013-01-03  8  10
             a   c
2013-01-01   0   2
2013-01-02   4   6
2013-01-03   8  10
2013-01-04  12  14
2013-01-05  16  18

三、是或者否的相关筛选

# 是或者否的筛选  只对比a 然后把其它的给显示出来
# print(df)
# a这一列中大于8的  然后把其它的bcd也会显示出来
print(df[df.a>6])

结果

             a   b   c   d
2013-01-03   8   9  10  11
2013-01-04  12  13  14  15
2013-01-05  16  17  18  19
2013-01-06  20  21  22  23
原文地址:https://www.cnblogs.com/William-xh/p/9557391.html