【问题标题】:Pandas: conditional rolling count v.2Pandas:条件滚动计数 v.2
【发布时间】:2019-07-26 03:34:11
【问题描述】:

请帮忙。我有数据框:

   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()

但它会将“-”视为新更改,因此它不起作用。

【问题讨论】:

    标签: python pandas dataframe count rolling-computation


    【解决方案1】:

    - 替换为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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-10
      • 2020-04-11
      • 1970-01-01
      • 1970-01-01
      • 2020-10-05
      • 2019-01-03
      相关资源
      最近更新 更多