为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

料青山看我应如是 2022-05-24 13:06:05
我不确定哪个是解决这个问题的最有效过程,所以我会很广泛。我想将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.nanout_df = a.combine_first(df)出去:    Value  Number0       X     0.01     NaN     0.02   00:00     1.03   00:00     2.04   29:00     3.05   30:00     4.06   00:00     5.07   02:00     6.08   15:00     7.09   20:00     8.010  10:00     9.011  15:00    10.012  20:00    11.013  25:00    12.0预期输出:    Value  Number0   Foo X     0.02   00:00     1.03   00:00     2.04   29:00     3.05   30:00     4.06   00:00     5.07   02:00     6.08   15:00     7.09   20:00     8.010  10:00     9.011  15:00    10.012  20:00    11.013  25:00    12.0
查看完整描述

1 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

你可以尝试这样的事情:


df.groupby((df['Value'] != val[0]).cumsum())[['Value','Number']].agg({'Value':' '.join, 'Number':'sum'})

输出:


       Value  Number

Value               

1      Foo X       0

2      00:00       1

3      00:00       2

4      29:00       3

5      30:00       4

6      00:00       5

7      02:00       6

8      15:00       7

9      20:00       8

10     10:00       9

11     15:00      10

12     20:00      11

13     25:00      12


查看完整回答
反对 回复 2022-05-24
  • 1 回答
  • 0 关注
  • 62 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信