pkrawat1

pkrawat1

How would you mutate Explorer Series data like an Enum reduce

"Hello everyone,

I’m currently diving into Elixir’s data libraries, exploring ways to apply stock market technical analysis logic using Explorer and data frames.

During my attempt to calculate the RSI (Relative Strength Index) for a stock, I encountered a requirement to compute series elements based on a formula that involves the previous row in a data frame. I initially tried using the shift function, but it appears not to track changes effectively, possibly due to lazy evaluation.

Let me simplify the problem. Imagine having a list of 1’s, and you want to update each element by adding it to the previous one.

%{a: [1, 1, 1, 1, 1]}
|> DF.new()
|> DF.mutate(c: S.add(a, S.shift(a, 1)))

What I expect is [1, 2, 3, 4, 5].

I’m wondering if there’s a more straightforward approach, perhaps involving a reduction function, where I can easily track the updated values. It’s possible I’m making it more complex than necessary. :thinking:"

Here is the actual livebook file I’m testing this out.

Javascript equivalent code that I’m trying out in elixir dataframe.

First 2 of 2 Posts Switch mode

billylanchantin

billylanchantin

Hi @pkrawat1,

The short answer is that there are a few open issues related to this functionality:

A version of it is definitely on the roadmap. But we need to structure the API in such a way that Polars can do the heavy lifting, so it’s tricky.

For the time being, the only way I know how to do this is to convert your series to an Elixir data structure, do this part in Elixir, then convert back.

pkrawat1

pkrawat1 OP

Hey @billylanchantin

Thanks for the heads up! I see those Explorer issues, and it’s good to know they’re on the roadmap. Wrapping my head around the Polars challenges – tricky but exciting! :sweat_smile:

The workaround tip with converting to Elixir data structure, doing the magic, and then converting back is handy for now. Much appreciated! :raising_hands:

— All posts loaded —

Where Next?

Trending in Questions Top

stjefim
Hello! Suppose you are building workflow (order / task / payment) processing system with the following requirements: Each workflow con...
New
jonnycharles
I’m in search of an Elixir library that offers PDF generation capabilities similar to Ruby’s Prawn. While there have been discussions abo...
New
spammy
I’m looking to build a personal workflow to quickly deploy web applications written in elixir/phoenix, for local consumption (ie not on t...
New
silverdr
Using Phoenix.LiveView.TagEngine as an EEx.Engine is deprecated! To compile HEEx, use Phoenix.LiveView.TagEngine.compile/2 instead. Sta...
New
dli
Before I dive in myself, did anyone successfully sprinkle Hologram into their existing LiveView app? Looking for hints regarding: Addi...
New
bottlenecked
Hi all, I wanted to ask how the community is dealing with post-release steps. Today we have Ecto migrations, which make sure that the db...
New
michallepicki
I am using Oban and occasionally, shortly after a deployment, a handful of jobs can fail because of dependency on other parts of the syst...
New

Other Trending Topics Top

JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Damirados
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge & Solve. They are GUI (Emerge) and State management (S...
New
ausimian
Emily is an Elixir library that runs Nx computations on Apple’s MLX. Install it as the default Nx backend and Nx, defn, Axon, Nx.Serving,...
New
type1fool
I just stumbled on a newly redesigned elixir-lang.org. :tada: It looks like @Software_Mansion did the work, and I think it is generally a...
New
akoutmos
@hugobarauna and I (Alex Koutmos) have been hard at work on writing a book on Nerves that takes you from simply blinking LEDs to building...
New

We're in Beta

About us Mission Statement