数据框:比较列值和下面的一行

Drive2blue

我有一个指示的数据框:

        Direction: 
2/01/19 None
1/31/19 Upward
1/30/19 None
1/29/19 None
1/28/19 Downward
1/27/19 None
1/26/19 None
1/25/19 Upward

我要基于以下条件(从1/25/19开始)创建“动量”列:
1.如果相应日期的方向为“向上”,则将值设置为“向上”
。2.如果动量下方的第一行是“向上”,将其设置为“向上”
。3.如果相应日期的“方向”是“向下”,则将其设置为“无”
。4.否则,将其设置为“无”。

换句话说,一旦您达到“向上”状态,就应该保持这种状态,直到您单击“向下”

结果应如下所示:

        Direction:  Momentum:
2/01/19 None        Upward
1/31/19 Upward      Upward
1/30/19 None        None
1/29/19 None        None
1/28/19 Downward    None
1/27/19 None        Upward
1/26/19 None        Upward
1/25/19 Upward      Upward

有没有一种方法可以不使用循环来完成?

耶斯列尔

通过新数据编辑答案,首先回填None值,然后替换DownwardNones:

#first replace strings Nones to None type
df['Direction:'] = df['Direction:'].mask(df['Direction:'] == 'None', None)
df['Momentum:'] = df['Direction:'].bfill().mask(lambda x: x == 'Downward', None)

要么:

s = df['Direction:'].bfill()
df['Momentum:'] = s.mask(s == 'Downward', None)

print (df)
        Direction:  Momentum:
2/01/19       None     Upward
1/31/19     Upward     Upward
1/30/19       None       None
1/29/19       None       None
1/28/19   Downward       None
1/27/19       None     Upward
1/26/19       None     Upward
1/25/19     Upward     Upward

旧答案:

numpy.where与链接的布尔掩码一起使用,比较移位后的值,也|可以按位或使用原始值

mask = df['Direction:'].eq('Upward') | df['Direction:'].shift(-1).eq('Upward')
df['Momentum:'] = np.where(mask, 'Upward', None)
print (df)
        Direction: Momentum:
1/31/19       None    Upward
1/30/19     Upward    Upward
1/29/19       None      None
1/28/19       None      None
1/27/19   Downward      None
1/26/19       None    Upward
1/25/19     Upward    Upward

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

遍历每一行并比较数据框的列值

来自分类Dev

Pandas数据框将列与一个值进行比较,然后将这一行和上一行放入另一数据框

来自分类Dev

如何为熊猫数据框的每一行打印索引值,列名和列数据?

来自分类Dev

熊猫数据框比较每组的第一行和最后一行

来自分类Dev

Pandas 数据框如何根据特定组和上一行值为列赋值

来自分类Dev

从最后一行获取数据框索引列的值

来自分类Dev

将 2 个数据框列与同一行中的 2 个 numpy 数组值进行比较

来自分类Dev

设置数据框中列的第一行和最后一行

来自分类Dev

从SAS下面的一行中复制一个值

来自分类Dev

将 A 和 I 之间的最后一行复制到下面的行

来自分类Dev

检查数据框中的每一行和每一列,并用用户定义函数替换值

来自分类Dev

比较其他熊猫数据框的每一行中的值

来自分类Dev

比较后将当前行值分配给熊猫数据框的前一行

来自分类Dev

即使刷新了数据网格,也移至下面的下一行

来自分类Dev

根据多个条件比较数据框的一行

来自分类Dev

比较数据框时识别唯一行

来自分类常见问题

通过数据框中的唯一ID获取第一行和最后一行的值

来自分类Dev

通过数据框中的唯一ID获取第一行和最后一行的值

来自分类Dev

如何使下面的代码不会跳过一行?

来自分类Dev

如何比较另一个熊猫数据框的行值和组值的总和?

来自分类Dev

比较当前行和上一行的值,如果需要,在Spark中比较列的后值

来自分类Dev

R将数据框中的每一列除以最后一行的值

来自分类Dev

访问每一行并检查数据框中的每一列值

来自分类Dev

一次更改数据框中的一行的多个列值

来自分类Dev

R将数据框中的每一列除以最后一行的值

来自分类Dev

比较Pandas数据框中具有上百万行的行和上一行的最快方法

来自分类Dev

VBA 在文本框中的下面一行中插入数据

来自分类Dev

遍历数据框列表,并删除其中的每一列和每一行

来自分类Dev

子集数据框,以便包含每一行的最大值和列名

Related 相关文章

  1. 1

    遍历每一行并比较数据框的列值

  2. 2

    Pandas数据框将列与一个值进行比较,然后将这一行和上一行放入另一数据框

  3. 3

    如何为熊猫数据框的每一行打印索引值,列名和列数据?

  4. 4

    熊猫数据框比较每组的第一行和最后一行

  5. 5

    Pandas 数据框如何根据特定组和上一行值为列赋值

  6. 6

    从最后一行获取数据框索引列的值

  7. 7

    将 2 个数据框列与同一行中的 2 个 numpy 数组值进行比较

  8. 8

    设置数据框中列的第一行和最后一行

  9. 9

    从SAS下面的一行中复制一个值

  10. 10

    将 A 和 I 之间的最后一行复制到下面的行

  11. 11

    检查数据框中的每一行和每一列,并用用户定义函数替换值

  12. 12

    比较其他熊猫数据框的每一行中的值

  13. 13

    比较后将当前行值分配给熊猫数据框的前一行

  14. 14

    即使刷新了数据网格,也移至下面的下一行

  15. 15

    根据多个条件比较数据框的一行

  16. 16

    比较数据框时识别唯一行

  17. 17

    通过数据框中的唯一ID获取第一行和最后一行的值

  18. 18

    通过数据框中的唯一ID获取第一行和最后一行的值

  19. 19

    如何使下面的代码不会跳过一行?

  20. 20

    如何比较另一个熊猫数据框的行值和组值的总和?

  21. 21

    比较当前行和上一行的值,如果需要,在Spark中比较列的后值

  22. 22

    R将数据框中的每一列除以最后一行的值

  23. 23

    访问每一行并检查数据框中的每一列值

  24. 24

    一次更改数据框中的一行的多个列值

  25. 25

    R将数据框中的每一列除以最后一行的值

  26. 26

    比较Pandas数据框中具有上百万行的行和上一行的最快方法

  27. 27

    VBA 在文本框中的下面一行中插入数据

  28. 28

    遍历数据框列表,并删除其中的每一列和每一行

  29. 29

    子集数据框,以便包含每一行的最大值和列名

热门标签

归档