pandas教程[4]Dataframe筛选数据!!!!!!!!!!!!!!!!!!!!!!

>>> import pandas as pd
>>> import numpy as np
>>> #今天还是用到了DataFrame,如果你用一下它的筛选数据的功能,你会大吃一惊,它非常擅长筛选数据,可以极大提高你的工作效率,废话不多说,下面看看几个进行复杂数据筛选的例子。
>>> #首先我们创建一个DataFrame,该DataFrame包含的数据如下
>>> df=pd.DataFrame(np.random.randn(6,4),columns=list('ABCD'))
>>> df
          A         B         C         D
0 -1.108935  1.187163  1.546778  0.246329
1 -0.015045  1.367264 -0.617322 -1.068358
2  0.502788  0.305497 -0.819171 -0.331027
3  2.585354 -0.043285  1.056259 -0.079882
4  0.316549 -1.464567  1.504431  0.803362
5 -1.097251 -0.706594 -1.393058 -0.251690
>>> #假如我们想要筛选D列数据中大于0的行
>>> df[df.D>0]
          A         B         C         D
0 -1.108935  1.187163  1.546778  0.246329
4  0.316549 -1.464567  1.504431  0.803362
>>> #使用&符号可以实现多条件筛选,当然是用"|"符号也可以实现多条件,只不过他是或的关系。
>>> df[(df.D>0)&(df.C<0)]
Empty DataFrame
Columns: [A, B, C, D]
Index: []
>>> df[(df.D<0)&(df.C>0)]
          A         B         C         D
3  2.585354 -0.043285  1.056259 -0.079882
>>> df[(df.D<0.5)&(df.C>1.5)]
          A         B         C         D
0 -1.108935  1.187163  1.546778  0.246329
>>> df[(df.D<0.5)|(df.C>1.5)]
          A         B         C         D
0 -1.108935  1.187163  1.546778  0.246329
1 -0.015045  1.367264 -0.617322 -1.068358
2  0.502788  0.305497 -0.819171 -0.331027
3  2.585354 -0.043285  1.056259 -0.079882
4  0.316549 -1.464567  1.504431  0.803362
5 -1.097251 -0.706594 -1.393058 -0.251690
>>> df[(df.D<0.5)|(df.C>1.52)]
          A         B         C         D
0 -1.108935  1.187163  1.546778  0.246329
1 -0.015045  1.367264 -0.617322 -1.068358
2  0.502788  0.305497 -0.819171 -0.331027
3  2.585354 -0.043285  1.056259 -0.079882
5 -1.097251 -0.706594 -1.393058 -0.251690
>>> #假如我们只需要A和B列数据,而D和C列数据都是用于筛选的,可以这样写:只返回了AB两列数据
>>> df[['A','B']][(df.D>0)&(df.C<0)]
Empty DataFrame
Columns: [A, B]
Index: []
>>> df[['A','B']][(df.D<0)&(df.C>0)]
          A         B
3  2.585354 -0.043285
>>> index = (df.D<0)&(df.C>0)
>>> index
0    False
1    False
2    False
3     True
4    False
5    False
dtype: bool
>>> df(index)
Traceback (most recent call last):
  File "<pyshell#19>", line 1, in <module>
    df(index)
TypeError: 'DataFrame' object is not callable
>>> df[index]
          A         B         C         D
3  2.585354 -0.043285  1.056259 -0.079882
>>> #我们还可以使用insin方法来筛选特定的值,把要筛选的值写到一个列表里,如alist
>>> alist=[-0.079882,0.687050,0.3685412]
>>> df['D'].isin(alist)
0    False
1    False
2    False
3    False
4    False
5    False
Name: D, dtype: bool
>>> alist=[0.246329]
>>> df['D'].isin(alist)
0    False
1    False
2    False
3    False
4    False
5    False
Name: D, dtype: bool
>>> df[df['D'].isin(alist)]
Empty DataFrame
Columns: [A, B, C, D]
Index: []
>>> df=pd.DataFrame(np.random.normal(6,4),columns=list('ABCD'))
Traceback (most recent call last):
  File "<pyshell#27>", line 1, in <module>
    df=pd.DataFrame(np.random.normal(6,4),columns=list('ABCD'))
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\core\frame.py", line 422, in __init__
    raise ValueError('DataFrame constructor not properly called!')
ValueError: DataFrame constructor not properly called!
>>> df=pd.DataFrame(np.arange(16).reshape(4,4),columns=list('ABCD'))
>>> df
    A   B   C   D
0   0   1   2   3
1   4   5   6   7
2   8   9  10  11
3  12  13  14  15
>>> alist=[11]
>>> df['D'].isin(alist)
0    False
1    False
2     True
3    False
Name: D, dtype: bool
>>> df[df['D'].isin(alist)]
   A  B   C   D
2  8  9  10  11
>>> 

 

 

 

 

  • 5
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值