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表示’stop’),-1和1之间的值作为无效(我稍后将丢弃的垃圾) .
有没有有效的方法来做这个而不是在整个数据帧上循环迭代?
最终结果如下:
data0 start_stop valID16820 1 0 False16821 1 1 True16822 1 0 True16823 1 0 True16824 1 0 True16825 1 -1 False16826 0 0 False16827 0 0 False16828 1 1 True16829 0 0 True16830 1 -1 False...
实现它的相关循环是,我认为:
df = df.reset_index(drop=True)value = Falsefor 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 valID0 0 False1 1 True2 0 True3 0 True4 0 True5 -1 False6 0 False7 0 False8 1 True9 0 True10 -1 False总结
以上是内存溢出为你收集整理的如何在特定的“开始”和“停止”标记之间的位置填充pandas系列中的值?全部内容,希望文章能够帮你解决如何在特定的“开始”和“停止”标记之间的位置填充pandas系列中的值?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)