如何识别python中的列值更改
我有一个熊猫数据框,如下所示,其中包含罢工价格和价值的数据如何识别python中的列值更改,python,pandas,Python,Pandas,我有一个熊猫数据框,如下所示,其中包含罢工价格和价值的数据 date time int_sp value 1 20180903 09:16 11700 283.90 315 20180903 14:31 11700 273.85 316 20180903 14:32 11700 274.05 317 20180903 14:33 11600
date time int_sp value
1 20180903 09:16 11700 283.90
315 20180903 14:31 11700 273.85
316 20180903 14:32 11700 274.05
317 20180903 14:33 11600 295.35
390 20180904 09:31 11600 284.5
391 20180904 09:32 11500 304.15
403 20180904 09:44 11500 301.6
404 20180904 09:45 11600 282.4
405 20180904 09:46 11500 300.35
406 20180904 09:47 11500 300.35
407 20180904 09:48 11500 300.95
408 20180904 09:49 11500 301.3
409 20180904 09:50 11600 280.4
474 20180904 10:55 11600 279.25
475 20180904 10:56 11500 300.15
我的第一笔交易应该总是在第一张唱片上卖出。现在,只要执行价(int_sp)发生变化,我就需要买入卖出的头寸,并通过以新的执行价卖出来创建新的交易
这是我的预期输出
sell_date sell_time buy_date buy_time int_sp sell_price buy_price
20180903 09:16 20180903 14:32 11700 283.90 274.05
20180903 14:33 20180904 09:31 11600 295.35 284.5
20180904 09:32 20180904 09:44 11500 304.15 301.6
20180904 09:45 20180904 09:45 11600 282.4 282.4
20180904 09:46 20180904 09:49 11500 300.35 301.3
20180904 09:50 20180904 10:55 11600 280.4 279.25
20180904 10:56 TBD TBD 11500 300.15 TBD
我对熊猫很陌生,想不出如何做到这一点。
有人能帮我吗?IIUC,用于获取销售信息
ndf = df.loc[df['int_sp'].diff().ne(0)].add_prefix('sell_').reset_index().copy()
现在,用面具
mask = df['int_sp'].diff().shift(-1).fillna(0).ne(0)
此掩码过滤滞后值,即与购买相关的值。那就分配吧
ndf.loc[:, 'buy_value'] = df.loc[mask, 'value'].reset_index(drop=True)
ndf.loc[:, 'buy_date'] = df.loc[mask, 'date'].reset_index(drop=True)
ndf.loc[:, 'buy_time'] = df.loc[mask, 'time'].reset_index(drop=True)
sell_date sell_time sell_int_sp sell_value buy_value buy_date buy_time
index
1 20180903 09:16 11700 283.90 274.05 20180903.0 14:32
317 20180903 14:33 11600 295.35 284.50 20180904.0 09:31
391 20180904 09:32 11500 304.15 301.60 20180904.0 09:44
404 20180904 09:45 11600 282.40 282.40 20180904.0 09:45
405 20180904 09:46 11500 300.35 301.30 20180904.0 09:49
409 20180904 09:50 11600 280.40 279.25 20180904.0 10:55
475 20180904 10:56 11500 300.15 NaN NaN NaN
在你的结果中,
buy_time
列在哪里?@RafaelC,好好工作吧。谢谢你,伙计!非常感谢你的时间和努力。