如何在特定的“开始”和“停止”标记之间的位置填充pandas系列中的值?

如何在特定的“开始”和“停止”标记之间的位置填充pandas系列中的值?,第1张

概述我有一个DataFrame,如下所示: df[16820:16830] data0 start_stop16820 1 016821 1 116822 1 016823 1 016824 1 016825 1 我有一个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表示’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系列中的值?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1192251.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存