パンダのリサンプリング関数を使用したいが、私自身のカスタム関数を適用したい。私が直面している問題は、カスタム関数が単一の配列ではなくpandasデータフレームを返すことです。累積関数がデータフレームを返すときのパンダ再サンプリング
次の例では、私の問題を示しています
>>> import pandas as pd
>>> import numpy as np
>>> def f(data):
... return ((1+data).cumprod(axis=0)-1)
...
>>> data = np.random.randn(1000,3)
>>> index = pd.date_range("20170101", periods = 1000, freq="B")
>>> df = pd.DataFrame(data= data, index =index)
は今、私はビジネスの終了月周波数に営業日リサンプリングするとします。
>>> resampler = df.resample("BM")
私は今、私の機能f
Iドンを適用した場合希望の結果が得られません。私はf
から私の出力の最後の行を取得したいと思います。
>>> resampler.apply(f)
これはパンダのデータフレームを返すf
私の機能でcumprod
becaumesです。 f
と書くと、最後の行だけが返されます。しかし、私はこの機能を他の場所でも使用して、データフレーム全体を返したいと思います。これは、関数f
に "last_row"のようなフラグを導入することで解決できます。このフラグは、完全行または最後の行を返すように調整します。しかし、このソリューションはかなり厄介なようです。
本当に必要な機能を最初に適用し、その月の最終営業日を選択すると簡単になると思います。それは実際にリサンプリングを必要とせず、リサンプリングのコンボであり、このトリッキーな累積機能を備えています。 – JohnE