gpt4 book ai didi

python - 跟踪 Dataframe 中的操作

转载 作者:太空宇宙 更新时间:2023-11-03 14:37:17 26 4
gpt4 key购买 nike

我的数据框

df1:

Index                 Amount               
01.01.2018 08:00:00 23.25
01.01.2018 08:10:00 25.50
01.01.2018 08:20:00 26.30
01.01.2018 08:30:00 25.00
01.01.2018 08:40:00 20.00
01.01.2018 08:50:00 21.20
01.01.2018 09:00:00 21.20
01.01.2018 09:10:00 31.20

df2:

Index       Operation
01.01.2018 -5.00
01.01.2018 10.00

我想在我的 df1 中跟踪来自 df2 的操作。

所以基本上检查 df2 中的操作,并找到 df1 中发生此事件的位置。对于前。有 -5.00,这个事件发生在这里:

01.01.2018 08:30:00   25.00
01.01.2018 08:40:00 20.00

我的预期输出:

df:

Index                 Amount  Operation_T/F  Amount_Operation              
01.01.2018 08:00:00 23.25 0 0
01.01.2018 08:10:00 25.50 0 0
01.01.2018 08:20:00 26.30 0 0
01.01.2018 08:30:00 25.00 0 0
01.01.2018 08:40:00 20.00 1 -5.0
01.01.2018 08:50:00 21.20 0 0
01.01.2018 09:00:00 21.20 0 0
01.01.2018 09:10:00 31.20 1 10.0

白天可以重复操作这一事实不是问题。当然,使用一些 for 和 if 可能是一个解决方案,但我正在尝试在 python 中实现一个干净的代码,我正在考虑一种更好的方法。

在为操作编写 TrueFalse 值时遇到了一些问题,if in rowrow + 1。我解决这个问题的想法是为两行创建 bin,然后跟踪该 bin 中是否发生了操作事件。你怎么认为?

提前致谢:)

最佳答案

这是一种使用 diff 的方法检查 df2.Operation 中的第一个差异在哪里等于 df2.Operation 并利用 broadcasting :

m = df1.Amount.diff().values == df2.Operation.values[:,None]
df1['Operation_T/F'] = m.sum(0)
df1['Amount_Operation'] = (m * df2.Operation.values[:,None]).sum(0)

Index Amount Operation_T/F Amount_Operation
0 2018-01-01 08:00:00 23.25 0 0.0
1 2018-01-01 08:10:00 25.50 0 0.0
2 2018-01-01 08:20:00 26.30 0 0.0
3 2018-01-01 08:30:00 25.00 0 0.0
4 2018-01-01 08:40:00 20.00 1 -5.0
5 2018-01-01 08:50:00 21.20 0 0.0
6 2018-01-01 09:00:00 21.20 0 0.0
7 2018-01-01 09:10:00 31.20 1 10.0

关于python - 跟踪 Dataframe 中的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56937461/

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