gpt4 book ai didi

python - 如何在特定 "start"和 "stop"标记之间的位置填充 pandas 系列中的值?

转载 作者:太空宇宙 更新时间:2023-11-03 13:26:14 24 4
gpt4 key购买 nike

我有一个 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 表示“开始”,-1 表示“停止”)并将 -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

关于python - 如何在特定 "start"和 "stop"标记之间的位置填充 pandas 系列中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55258435/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com