如何识别python中的列值更改

2024-05-14 20:03:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个熊猫数据框如下,有罢工价格和价值的数据。你知道吗

    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\ U 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

我对熊猫很陌生,想不出如何做到这一点。 有人能帮我吗?你知道吗


Tags: 数据datetimevalue价格buy交易price
1条回答
网友
1楼 · 发布于 2024-05-14 20:03:59

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

相关问题 更多 >

    热门问题