gpt4 book ai didi

python - 有没有办法找到当前行中金额不为0的日期之前的最后一个日期?

转载 作者:行者123 更新时间:2023-12-04 00:57:47 24 4
gpt4 key购买 nike

我有一个像这样的 Pandas 数据框:

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
...

有什么想法吗?

提前致谢

最佳答案

您可以创建辅助系列,用于比较 0AmountSeries.cumsum 的连续总和,过滤出第一组并为每组 0 行创建 first 系列 GroupBy.transformGroupBy.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

关于python - 有没有办法找到当前行中金额不为0的日期之前的最后一个日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60929697/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com