GithubHelp home page GithubHelp logo

Comments (3)

Anexen avatar Anexen commented on May 20, 2024 1

Hi @Peque,
I can support the Series with DatetimeIndex and the case with DataFrame will be simply df.apply(xirr)

You can use the following code with the current implementation:

# for Series
xirr(s.reset_index())
xirr(s.index, s)

# for DataFrame
df.apply(lambda col: xirr(col.reset_index()))
df.apply(lambda col: xirr(col.index, col)

from pyxirr.

Anexen avatar Anexen commented on May 20, 2024 1

@Peque , I don't think so. I would like a clear separation between "Invalid input" case and "does not converge" case.

You can use something like this:

def suppress(func):
    def wrapper(*args, **kwargs):
        try:
            return func(*args, **kwargs)
        except InvalidPaymentsError:
            return None
    return wrapper
    
df.apply(suppress(xirr))

from pyxirr.

Peque avatar Peque commented on May 20, 2024

@Anexen Do you think it would make sense to return NaN instead of raising exceptions?

This would allow for df.apply(xirr) to work fine when possible.

In example:

from pandas import DataFrame
from pandas import date_range
from pyxirr import xirr

timezone = "Europe/Madrid"
index = date_range("2000-01-01", periods=10, freq="Y", closed="left", tz=timezone)
df = DataFrame(index=index, data={"a": 10, "b": 10})
df.iloc[0]["a"] = -25
df.apply(xirr)

Would return 0.3774630471754315, NaN.

from pyxirr.

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.