【问题标题】:Filtering data in pandas过滤熊猫中的数据
【发布时间】:2014-04-14 10:19:32
【问题描述】:

我正在使用 pandas 0.13.0

我有一个包含 250 万条记录的数据框 (a)

我想排除同时应用两个条件的数百条记录:仅同时满足两个条件的记录。

我想看看在应用这两个条件时我会排除多少条记录:

len(a)  
2523250
b=a[(a.cond1=='120.A') & (a.cond2==2012)]
len(b)
6010

但是当我应用条件来获得最终的数据帧时:

c=a[(a.cond1!='120.A') & (a.cond2!=2012)]
len(c)
2214968

在第二种情况下,'&' 的工作方式与 'OR' 相同 我做错了什么?

【问题讨论】:

  • 如果这样做,len 是否符合第二个条件:a[~((a.cond1=='120.A') & (a.cond2==2012))]?
  • 是的,谢谢,但为什么我原来的方法不起作用?

标签: python pandas


【解决方案1】:

查看De Morgan's laws& 的逻辑否定不仅仅是将==!= 交换,您还必须将&| 交换,因为您想要cond1 != '120.A' 或 所在的行cond2 != 2012,即,如果!= 条件之一为真,则您要排除一行,因为这会使原始& 语句False

@EdChum 上面的评论相当于

c=a[(a.cond1!='120.A') | (a.cond2!=2012)]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-25
    • 1970-01-01
    • 1970-01-01
    • 2019-04-13
    • 2015-05-28
    • 2018-02-06
    • 2018-09-28
    相关资源
    最近更新 更多