【发布时间】:2022-01-26 14:17:54
【问题描述】:
这是一些带有“输入”列和“触发”列的示例数据。 “输入”列通常为 False,但具有 True 段(例如,样本数据中有一个 True 段)。我正在尝试创建第三列(“输出”),它是“输入”列的修改版本。本质上,“输出”中的 True 段应该早于“输入”开始,如“触发器”所示(由“触发器”的前一个 True 值)。我想通过向量操作来实现这一点,并且我想避免循环,例如为。
index = pd.date_range('2020-01-01', '2020-01-13', freq='D')
columns = ['Input', 'Trigger']
data = [[False, False],
[False, False],
[False, True],
[False, False],
[False, False],
[False, True],
[False, False],
[False, False],
[True, False],
[True, False],
[True, False],
[True, False],
[False, False]
]
pd.DataFrame(data, index, columns)
我不知道如何实现我的目的,但我提供的示例数据的结果如下所示:
columns = ['Input', 'Trigger', 'Output']
data = [[False, False, False],
[False, False, False],
[False, True, False],
[False, False, False],
[False, False, False],
[False, True, True],
[False, False, True],
[False, False, True],
[True, False, True],
[True, False, True],
[True, False, True],
[True, False, True],
[False, False, False]
]
pd.DataFrame(data, index, columns)
【问题讨论】:
-
我不确定你可以向量化这个操作。
-
我不遵循逻辑。第三行的“输出”不应该是
True吗? -
输入中是否只有一段 True?在输入拉伸之后(或期间),触发器中是否存在 True?那么应该怎么办呢?
-
为什么第三行的“触发器”被忽略了?为什么最后一行是假的?想象一下,除了您明确告诉我们的内容外,我们对您正在尝试做的事情一无所知。
-
@mozway:如果在 Input 的 True 拉伸内 Trigger 中有 True,我们将忽略它。据我所知,这就是您的解决方案正在做的事情。谢谢,太棒了!
标签: python pandas boolean conditional-statements boolean-expression