跟踪数据框中的操作

路易吉

我的数据框

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 row或者row + 1我要解决的想法是为两行创建垃圾箱,然后跟踪该垃圾箱中是否发生了操作事件。你怎么看?

提前致谢 :)

亚图

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章