【发布时间】:2020-04-12 17:16:27
【问题描述】:
我有一个包含一些值的数据框,我需要检查某组行的前行和后行是否满足某些条件,如果满足,则创建一个具有真/假的新列。我如何实现这一目标?
数据框
------------------------------------------------------------------
name age school age2 salary company
------------------------------------------------------------------
Tina 24 2500 GHJ
-----------------------------------------------------------------
Tina 24 York
-----------------------------------------------------------------
Tina 24 2600 GHJ
-----------------------------------------------------------------
Sally 24 2700 OPS
-----------------------------------------------------------------
Sally null 2700 OPS
-----------------------------------------------------------------
Sally 23 leeds
-----------------------------------------------------------------
Sally 23 2700 OPS
-----------------------------------------------------------------
我想生成这个数据帧
--------------------------------------------------------------------
name age school age2 salary company flag
--------------------------------------------------------------------
Tina 24 2500 GHJ
---------------------------------------------------------------------
Tina 24 York FALSE
--------------------------------------------------------------------
Tina 24 2600 GHJ
-----------------------------------------------------------------
Sally 24 2700 OPS
-----------------------------------------------------------------
Sally null 2700 OPS
-----------------------------------------------------------------
Sally 23 leeds TRUE
-----------------------------------------------------------------
Sally 23 2700 OPS
-----------------------------------------------------------------
一个。这背后的逻辑是对于age不为null的每一行,我们检查age2上方的直接行是否等于当前年龄。 如果是这样,我们将标志设置为 false。
b.如果不是,那么我们检查下面的直接行是否 == age2。因此,如果 age == age2 用于下面的直接行 -> flag is TRUE。
请注意,当我的意思是立即时,我们正在寻找 age2 的下一个和上一个非空值。如果age2 为null,那么我们进一步向上/向下查看为age2 设置的值。
【问题讨论】:
-
您可以创建新的列,称为“上方”和“下方”,然后将相关列分配给它们上移或下移 (pandas.pydata.org/pandas-docs/version/0.22/generated/…)。然后,您可以使用 apply (pandas.pydata.org/pandas-docs/version/0.22/generated/…) 将最后一行设置为 true/false。
标签: python pandas numpy dataframe scipy