こんにちは、(複数の列にまたがる)データフレーム内の連続するゼロ観測の数を数えるカウンタを実装したいと思います。しかし、ゼロ以外の観測値が見つかった場合はリセットしたいと思います。私はforループを使用しましたが、それは非常に遅いです、私ははるかに効率的な方法が必要であると確信しています。これは私のコードである:ここpython pandaデータフレームでリセットするカウンタを実装する
私が最初
df1=pd.DataFrame(index= df, columns=df)
df1=df1.fillna(0)
上方DFの同じ特性を有する空のデータフレーム(データフレーム)を初期化DF
df.head()
ACL ACT ADH ADR AFE AFH AFT
2013-02-05 NaN NaN NaN NaN NaN NaN NaN
2013-02-12 -0.136861 -0.020406 0.046150 0.000000 -0.005321 NaN 0.058195
2013-02-19 -0.006632 0.041665 0.007365 0.012738 0.040930 NaN -0.037818
2013-02-26 -0.023848 -0.023999 -0.030677 -0.003144 0.050604 NaN -0.047604
2013-03-05 0.009771 -0.024589 -0.021073 -0.039432 0.047315 NaN 0.068727
のスナップショットであるそれから作成します行を繰り返し処理する関数ですが、これは一度に1つの列しか処理しません。
def zero_obs(x=df,y=df1):
for i in range(len(x)):
if x[i] == 0:
y[i] = y[i-1] + 1
else:
y[i] = 0
return y
for col in df.columns:
df1[col] = zero_obs(x=df[col],y=df1[col])
本当に助けてくれてありがとう!
次のように私は期待して出力されている:
df1.tail()
BRN AXL TTO AGL ACL
2017-01-03 3 125 0 0 0
2017-01-10 0 126 0 0 0
2017-01-17 1 127 0 0 0
2017-01-24 0 128 0 0 0
2017-01-31 0 129 1 0 0
に同じようにうまく動作し、あなたの予想される出力は何ですか? – Zero
こんにちはJohn、最初の質問を参照してください、私はカウンタの出力とデータフレーム(df1)である期待された結果を更新しました – blala82