Pandas - 检查前一行的条件的通用函数
我正在编写一个函数,如果另一列的 n
前行为负数,我想向数据帧添加一个系列,该系列为 True
。
我将其用于特定数字 n
,但我不知道如何将其概括为可以传入的参数。
例如,我们有一个数据帧,其中包含名为 的列>总计
。如果有 6 个连续行的 Total
小于零,则以下代码会将 True
放入标题为 consecutive_negative_value
的列中的行中。如何将其推广为接受任何数字 n 而不仅仅是检查六个句点?
df['negative_value'] = df['Total'] < 0
df['consecutive_negative_value'] = (
df['negative_value'] &
df['negative_value'].shift(1) &
df['negative_value'].shift(2) &
df['negative_value'].shift(3) &
df['negative_value'].shift(4) &
df['negative_value'].shift(5)
)
I'm writing a function where I'd like to add a series to a dataframe that is True
if n
previous rows of another column are negative.
I have this working for a specific number as n
, but I don't know how to generalize it into a parameter that could be passed in.
For example, we have a dataframe with a column named Total
. The following code will put True
in rows in a column titled consecutive_negative_value
if there are 6 consecutive rows where Total
is less than zero. How can this be generalized to accept any number n
instead of just checking six periods?
df['negative_value'] = df['Total'] < 0
df['consecutive_negative_value'] = (
df['negative_value'] &
df['negative_value'].shift(1) &
df['negative_value'].shift(2) &
df['negative_value'].shift(3) &
df['negative_value'].shift(4) &
df['negative_value'].shift(5)
)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用
rolling.sum
并检查总和值是否等于窗口大小:示例,窗口大小为 3:
You can use
rolling.sum
and check if the sum value is equal to the window size:Example with a window size of 3: