如何在特定的“开始”和“停止”标记之间的位置填充pandas系列中
发布时间:2020-12-20 11:10:11 所属栏目:Python 来源:网络整理
导读:我有一个DataFrame,如下所示: df[16820:16830] data0 start_stop16820 1 016821 1 116822 1 016823 1 016824 1 016825 1 -116826 0 016827 0 016828 1 116829 0 016830 1 -1 我需要做的是将start_stop列中1和-1之间的值标记为有效(1表示’start’,-1表示’s
我有一个DataFrame,如下所示:
df[16820:16830] data0 start_stop 16820 1 0 16821 1 1 16822 1 0 16823 1 0 16824 1 0 16825 1 -1 16826 0 0 16827 0 0 16828 1 1 16829 0 0 16830 1 -1 我需要做的是将start_stop列中1和-1之间的值标记为有效(1表示’start’,-1表示’stop’),-1和1之间的值作为无效(我稍后将丢弃的垃圾) . 最终结果如下: data0 start_stop valid 16820 1 0 False 16821 1 1 True 16822 1 0 True 16823 1 0 True 16824 1 0 True 16825 1 -1 False 16826 0 0 False 16827 0 0 False 16828 1 1 True 16829 0 0 True 16830 1 -1 False ... 实现它的相关循环是,我认为: df = df.reset_index(drop=True) value = False for i in range(0,df.shape[0]): if df.loc[i,'start_stop'] == 1: df.loc[i,'valid'] = True value = True elif df.loc[i,'start_stop'] == -1: df.loc[i,'valid'] = False value = False if df.loc[i,'start_stop'] == 0: df.loc[i,'valid'] = value 谢谢! 解决方法
这应该工作
df['valid'] = df.start_stop.cumsum() 然后 df['valid'] = df['valid'].apply(lambda x: True if x==1 else False) df start_stop valid 0 0 False 1 1 True 2 0 True 3 0 True 4 0 True 5 -1 False 6 0 False 7 0 False 8 1 True 9 0 True 10 -1 False (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |