Coder Social home page Coder Social logo

Comments (8)

kieferk avatar kieferk commented on August 19, 2024

This is a tricky one. I'll have to dive into it a little bit to see what's going on. The ~ usage on the symbolic is one of the more complicated parts of the code and it's been awhile since I wrote that.

from dfply.

kieferk avatar kieferk commented on August 19, 2024

Ok so this is definitely a bug, but I'm gonna need to think about how I'll fix it. Essentially the problem is that the inversion is not propagating through properly in the chain of operations, and unfortunately it's not a trivial fix as far as I can tell right now. I'll let you know when I come up with a solution.

from dfply.

EricPrideaux avatar EricPrideaux commented on August 19, 2024

Hi Kieferk,
Many thanks for your update. I look forward to your solution and will keep an eye out!

from dfply.

andrewkho avatar andrewkho commented on August 19, 2024

Just wanted to chime in that I have also come across this bug, same scenario when using mask except my case was e.g. mask(X.bool_col1 & (~X.bool_col2))

from dfply.

andrewkho avatar andrewkho commented on August 19, 2024

Also wanted to add that in the case of &, you can use mask(condA, ~condB), and alternatively, the - sign for inversion also works, e.g. mask(condA & -condB)

from dfply.

kieferk avatar kieferk commented on August 19, 2024

Sorry I've been inactive for awhile since work has been very busy. I am going to dive back in and try to tackle this over the weekend.

I am hoping I can resolve this "elegantly" but from what I can see it may require some substantial code re-writing. I'll keep you posted.

from dfply.

jstrong-tios avatar jstrong-tios commented on August 19, 2024

interestingly, passing the invert operator to make_symbolic results in correct behavior (fwiw):

from operator import inv # inv(x) == ~x

df['a'].isnull() | (~df['b'].isnull())
#        m
# 0   True
# 1   True
# 2   True
# 3   True
# 4  False

df >> transmute(m = X.a.isnull() | inv(X.b.isnull()))
#        m
# 0   True
# 1  False
# 2  False
# 3  False
# 4   True

df >> transmute(m = X.a.isnull() | make_symbolic(inv)(X.b.isnull()))
#        m
# 0   True
# 1   True
# 2   True
# 3   True
# 4  False

from dfply.

antonio-yu avatar antonio-yu commented on August 19, 2024

Hi kieferk,

My friends and I are very excited and thankful when encounting the dplyr-style package.
We use filter_by a lot in filting chinese by boolean values.
We look forward to your solution for this Boolean bug.

from dfply.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.