在熊猫df中移动等于特定值的行

我不确定哪个是解决这个问题的最有效过程,所以我会很广泛。我想将where与特定值shift结合起来。对于下面的内容,我想提高价值所在。但我想将它与上面的字符串结合起来,而不是覆盖它。row==dfshift rows==X


注意:row我要shift升级的是每个14th row. 所以每隔 n 次row及shift以上选择一次可能更容易?


df = pd.DataFrame({

    'Value' : ['Foo','X','00:00','00:00','29:00','30:00','00:00','02:00','15:00','20:00','10:00','15:00','20:00','25:00'],                 

    'Number' : [00,0,1,2,3,4,5,6,7,8,9,10,11,12],                      

    })


val = ['X']


a = df[df.isin(val)].shift(-1)


df[df.isin(val)] = np.nan


out_df = a.combine_first(df)

出去:


    Value  Number

0       X     0.0

1     NaN     0.0

2   00:00     1.0

3   00:00     2.0

4   29:00     3.0

5   30:00     4.0

6   00:00     5.0

7   02:00     6.0

8   15:00     7.0

9   20:00     8.0

10  10:00     9.0

11  15:00    10.0

12  20:00    11.0

13  25:00    12.0

预期输出:


    Value  Number

0   Foo X     0.0

2   00:00     1.0

3   00:00     2.0

4   29:00     3.0

5   30:00     4.0

6   00:00     5.0

7   02:00     6.0

8   15:00     7.0

9   20:00     8.0

10  10:00     9.0

11  15:00    10.0

12  20:00    11.0

13  25:00    12.0


料青山看我应如是
浏览 65回答 1
1回答

一只斗牛犬

你可以尝试这样的事情:df.groupby((df['Value'] != val[0]).cumsum())[['Value','Number']].agg({'Value':' '.join, 'Number':'sum'})输出:       Value  NumberValue               1      Foo X       02      00:00       13      00:00       24      29:00       35      30:00       46      00:00       57      02:00       68      15:00       79      20:00       810     10:00       911     15:00      1012     20:00      1113     25:00      12
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python