Объединить строки на основе столбца до выполнения условия и применить формулу? - PullRequest
1 голос
/ 06 мая 2019

df:

    Unnamed: 0  Trade Date             Symbol Exchange Segment Trade Type  Qty     Price          Order ID  Trade ID                Time
0          NaN  2019-04-24  BANKNIFTY19APRFUT      NSE      FO       sell  140  29593.00  1400000000087742  50013671 2019-04-24 09:15:16
1          NaN  2019-04-24  BANKNIFTY19APRFUT      NSE      FO       sell   20  29592.95  1400000000087742  50013672 2019-04-24 09:15:16
2          NaN  2019-04-24  BANKNIFTY19APRFUT      NSE      FO       sell   20  29592.90  1400000000087742  50013673 2019-04-24 09:15:16
3          NaN  2019-04-24  BANKNIFTY19APRFUT      NSE      FO       sell   20  29588.40  1400000000087742  50013674 2019-04-24 09:15:16
4          NaN  2019-04-24  BANKNIFTY19APRFUT      NSE      FO        buy   20  29576.45  1400000000224462  52308594 2019-04-24 13:55:12
5          NaN  2019-04-24  BANKNIFTY19APRFUT      NSE      FO        buy  100  29576.45  1400000000224462  52308595 2019-04-24 13:55:12
6          NaN  2019-04-24  BANKNIFTY19APRFUT      NSE      FO        buy   20  29576.80  1400000000224462  52308596 2019-04-24 13:55:12
7          NaN  2019-04-24  BANKNIFTY19APRFUT      NSE      FO        buy   40  29576.80  1400000000224462  52308597 2019-04-24 13:55:12
8          NaN  2019-04-24  BANKNIFTY19APRFUT      NSE      FO        buy   20  29577.00  1400000000224462  52308598 2019-04-24 13:55:12
9          NaN  2019-04-24  BANKNIFTY19APRFUT      NSE      FO        buy   20  29685.00  1400000033885922  52664935 2019-04-24 14:03:38
10         NaN  2019-04-24  BANKNIFTY19APRFUT      NSE      FO        buy   20  29685.00  1400000033885922  52664936 2019-04-24 14:03:38
11         NaN  2019-04-24  BANKNIFTY19APRFUT      NSE      FO        buy   20  29685.00  1400000033885922  52664937 2019-04-24 14:03:38
12         NaN  2019-04-24  BANKNIFTY19APRFUT      NSE      FO        buy   20  29685.00  1400000033885922  52664938 2019-04-24 14:03:38
13         NaN  2019-04-24  BANKNIFTY19APRFUT      NSE      FO        buy   20  29686.45  1400000033885922  52664939 2019-04-24 14:03:38
14         NaN  2019-04-24  BANKNIFTY19APRFUT      NSE      FO        buy  100  29686.55  1400000033885922  52664940 2019-04-24 14:03:38
15         NaN  2019-04-24  BANKNIFTY19APRFUT      NSE      FO       sell   20  29915.65  1400000048617426  54163123 2019-04-24 15:16:48
16         NaN  2019-04-24  BANKNIFTY19APRFUT      NSE      FO       sell   20  29915.60  1400000048617426  54163124 2019-04-24 15:16:48
17         NaN  2019-04-24  BANKNIFTY19APRFUT      NSE      FO       sell   40  29914.55  1400000048617426  54163125 2019-04-24 15:16:48
18         NaN  2019-04-24  BANKNIFTY19APRFUT      NSE      FO       sell   40  29914.45  1400000048617426  54163126 2019-04-24 15:16:48
19         NaN  2019-04-24  BANKNIFTY19APRFUT      NSE      FO       sell   20  29914.00  1400000048617426  54163127 2019-04-24 15:16:48
20         NaN  2019-04-24  BANKNIFTY19APRFUT      NSE      FO       sell   20  29914.00  1400000048617426  54163128 2019-04-24 15:16:48
21         NaN  2019-04-24  BANKNIFTY19APRFUT      NSE      FO       sell   20  29913.95  1400000048617426  54163129 2019-04-24 15:16:48
22         NaN  2019-04-24  BANKNIFTY19APRFUT      NSE      FO       sell   20  29913.55  1400000048617426  54163130 2019-04-24 15:16:48

Я хочу проверить Trade Type в строке 0, и если следующая строка (1) также совпадает с Trade Type, добавьте значение Qty в первую строку и сделайте Price = среднее значение для две цены на основе Qty.

Так до тех пор, пока мы не достигнем другого Trade Type.

Затем делайте то же самое, пока количество различных Trade Type не станет равным строке 0. То есть сделка закрыта. И если количество больше, мы создаем новую строку с оставшимся количеством.

Ожидаемый результат:

    Unnamed: 0  Trade Date             Symbol Exchange Segment Trade Type  Qty     Price          Order ID  Trade ID                Time
0          NaN  2019-04-24  BANKNIFTY19APRFUT      NSE      FO       sell  200  29592.525  1400000000087742  50013671 2019-04-24 09:15:16
1          NaN  2019-04-24  BANKNIFTY19APRFUT      NSE      FO        buy   200  29576.61  1400000000224462  52308594 2019-04-24 13:55:12
2          NaN  2019-04-24  BANKNIFTY19APRFUT      NSE      FO        buy  200  29685.92  1400000000224462  52308595 2019-04-24 13:55:12
3         NaN  2019-04-24  BANKNIFTY19APRFUT      NSE      FO       sell   200  29914.475  

Trade ID Order ID Trade Time не очень важны.

Я могу сделать это, используя цикл и списки, но я не думаю, что это способ питона / панды.

TIA

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...