前提・実現したいこと
Python初心者です。
下記のようなデータがあったとして、cを用いてdを計算したいと考えております。
cは事前に与えられているもの、dが計算結果です。
各行のdは直前のdも参照して計算しています。
具体的には、c_iとd_iをインデックスiのデータとした場合、d_1 = max(min(sum(d_0, c_1*0.1), 1), 0.5)。
ただし、一番初めのレコードについてはdは1となる。
c | d | |
---|---|---|
0 | 1.35 | 1 |
1 | -1.37 | 0.86 |
2 | -1.12 | 0.75 |
3 | 1.67 | 0.92 |
4 | 0.92 | 1 |
5 | -1.89 | 0.81 |
6 | 1.57 | 0.97 |
7 | 1.96 | 1 |
8 | -0.14 | 0.99 |
9 | -0.5 | 0.94 |
import numpy as np import pandas as pd df=pd.DataFrame({'c': [1.35,-1.37,-1.12,1.67,0.92,-1.89,1.57,1.96,-0.14,-0.5]})
試したこと
下記のコードをベースに何かしようと思ったのですが、直前のdの結果を用いる方法が全く見当がつかず、困っています。
アドバイスいただけると助かります。
shift().rolling(1).apply(lambda x: x)
補足情報
Python 3.7.7
Numpy 1.18.1
Pandas 1.0.3
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/28 01:18