Slight correction for 3 or 4 instead of just 3..

result = pc.is_in(list(range(len(arr))), pc.filter(indices, pc.is_in(flat_arr, 
pa.array([3,4]))))

From: Lee, David
Sent: Wednesday, November 2, 2022 11:26 AM
To: [email protected]
Subject: RE: Filter a list array based on the contents of the list.

This works..

import pyarrow as pa
import pyarrow.compute as pc

arr = pa.array([[1,2],[3],[3,4,5]])

indices = pc.list_parent_indices(arr)
flat_arr = pc.list_flatten(arr)


result = pc.is_in(list(range(len(arr))), pc.filter(indices, pc.equal(flat_arr, 
3)))

>>> result
<pyarrow.lib.BooleanArray object at 0x00000243EA2D4D00>
[
  false,
  true,
  true
]


From: Suresh V <[email protected]<mailto:[email protected]>>
Sent: Wednesday, November 2, 2022 10:23 AM
To: [email protected]<mailto:[email protected]>
Subject: Filter a list array based on the contents of the list.


External Email: Use caution with links and attachments
Hi ..

Is there a compute function I can use to filter an array with list entries 
based on the contents of the list?

For eg.
arr = pa.array([1,2],[3],[3,4,5]). I want to run a computer function which 
return true if the entries have 3 or 4.

Expected output is:
pa.array(False, True, True).

The closest I could find was map lookup which expects the entries to be map.

Thanks

This message may contain information that is confidential or privileged. If you 
are not the intended recipient, please advise the sender immediately and delete 
this message. See 
http://www.blackrock.com/corporate/compliance/email-disclaimers for further 
information.  Please refer to 
http://www.blackrock.com/corporate/compliance/privacy-policy for more 
information about BlackRock’s Privacy Policy.


For a list of BlackRock's office addresses worldwide, see 
http://www.blackrock.com/corporate/about-us/contacts-locations.

© 2022 BlackRock, Inc. All rights reserved.

Reply via email to