Панды: условный прокатный ролик v.2 - PullRequest
0 голосов
/ 04 марта 2019

пожалуйста, помогите.У меня есть датафрейм:

   trade_type
0  -
1  Buy
2  -   
3  -
4  Sell
5  Buy
6  -
7  Sell
8  -
9  Sell
10 -

Мне нужно все это пересчитать! = "-" до следующего изменения и сохранить его в каждой строке в новом столбце "trade_ID", поэтому это выглядит так:

 trade_type trade_ID
0  -        0
1  Buy      1
2  -        1
3  -        1
4  Sell     2
5  Buy      3
6  -        3
7  Sell     4
8  -        4
9  Sell     5
10  -       5

Я пытался использовать:

df['trade_ID'] = (df.trade_type.shift(1) != df.trade_type).astype(int).cumsum()

, но это считается "-" как новое изменение, поэтому оно не работает.

1 Ответ

0 голосов
/ 04 марта 2019

заменить - на np.nan (после import numpy as np) и отфильтровать на series.notna() и применить series.cumsum():

df['trade_ID']=df.trade_type.replace("-",np.nan).notna().cumsum()
print(df)

   trade_type  trade_ID
0           -         0
1         Buy         1
2           -         1
3           -         1
4        Sell         2
5         Buy         3
6           -         3
7        Sell         4
8           -         4
9        Sell         5
10          -         5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...