フランチェスコ・モリーニ:
私のようなパンダのデータフレームをしました:
Date, Amount
01/01/2020, 10
01/02/2020, 15
01/03/2020, 0
01/04/2020, 11
01/05/2020, 0
01/06/2020, 15
01/07/2020, 12
...
私は、最後の0量が新しい列(すなわち「前」)のショーの日数を追加したいと思います。例えば
Date, Amount, Before
01/01/2020, 10, 0
01/02/2020, 15, 0
01/03/2020, 0, 0
01/04/2020, 11, 1
01/05/2020, 0, 0
01/06/2020, 15, 1
01/07/2020, 12, 2
...
何か案は?
前もって感謝します
エズレル:
あなたは比較のためのシリーズをヘルパー作成することができますAmount
によって0
で連続した合計値とのSeries.cumsum
最初のグループ外のフィルタ、および作成first
のためのシリーズを0
して、グループごとの行GroupBy.transform
とGroupBy.first
、以前からの日数について、その後減算日0
:
df['Date'] = pd.to_datetime(df['Date'])
g = df['Amount'].eq(0).cumsum()
first = df.groupby(g[g > 0])['Date'].transform('first')
df['Before'] = df['Date'].sub(first).dt.days.fillna(0).astype(int)
print (df)
Date Amount Before
0 2020-01-01 10 0
1 2020-01-02 15 0
2 2020-01-03 0 0
3 2020-01-04 11 1
4 2020-01-05 0 0
5 2020-01-06 15 1
6 2020-01-07 12 2