【问题标题】:How to replace the current rows with previous rows如何用以前的行替换当前行
【发布时间】:2021-03-01 14:26:49
【问题描述】:

我有如下数据框 df,我想用前四行来估算零。

我尝试了下面的代码,但对我不起作用

       df.loc [7:11] = df.loc [3:7] 

【问题讨论】:

    标签: python-3.x pandas time-series


    【解决方案1】:

    您的解决方案应该通过转换为 numpy 数组来更改以避免索引对齐:

    df.loc[7:10] = df.loc[3:6].to_numpy()
    print (df)
        XYZ
    0    12
    1    23
    2    11
    3    34
    4    45
    5    54
    6    34
    7    34
    8    45
    9    54
    10   34
    11  100
    12   12
    13   15
    

    另一个想法是将0替换为Series.mask和Series.shift:

    df = pd.DataFrame({'XYZ':[12,23,11,34,45,54,34,0,0,0,0,100,12,15]})
    
    df['XYZ'] = df['XYZ'].mask(df['XYZ'].eq(0), df['XYZ'].shift(4))
    print (df)
        XYZ
    0    12
    1    23
    2    11
    3    34
    4    45
    5    54
    6    34
    7    34
    8    45
    9    54
    10   34
    11  100
    12   12
    13   15
    

    【讨论】:

      【解决方案2】:

      你也可以使用:

      df.loc[7:11, 'XYZ'] = df.loc[3:7, 'XYZ'].tolist()
      

      【讨论】:

        猜你喜欢
        • 2014-07-31
        • 2013-09-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-27
        • 1970-01-01
        相关资源
        最近更新 更多