Pandas数据帧numpy在多个条件下

2024-10-03 02:47:27 发布

您现在位置:Python中文网/ 问答频道 /正文

用熊猫和纽比。如何实现以下目标:

df['thecol'] = np.where(
(df["a"] >= df["a"].shift(1)) &
(df["a"] >= df["a"].shift(2)) &
(df["a"] >= df["a"].shift(3)) &
(df["a"] >= df["a"].shift(4)) &
(df["a"] >= df["a"].shift(5)) &
(df["a"] >= df["a"].shift(6)) &
(df["a"] >= df["a"].shift(7)) &
(df["a"] >= df["a"].shift(8)) &
(df["a"] >= df["a"].shift(9)) &
(df["a"] >= df["a"].shift(10))
,'istrue','isnottrue')

没有如此丑陋的代码重复,如果只是数字在改变?我想有相同的代码与我提供的任何数字,而不是键入所有的手动?在

它的意思是将列“a”中的当前值与同一列中的值(上面一行和上面两行等)进行比较,如果所有这些条件都为真,则结果为“istrue”

我尝试在for循环中移动dataframe,然后将该值附加到一个列表中,并计算其最大值,使其仅具有(df[“a”]>;=maxvalue)一次,但这对我也不起作用。我是Python的新手,在不久的将来可能会问更多愚蠢的问题

这是可行的,但我希望它也没有这个重复的代码,所以我可以学习正确的代码。我尝试过使用yield generator的示例,但也无法使其正常工作

@编辑: 回答者。我需要rolling。在

最后我想出了一个可怕的方法:

^{pr2}$

Tags: 代码目标dataframedffor键入shiftnp