【问题标题】:Pandas: How can I replace all values that are smaller than the previous value in a dataframe?Pandas:如何替换数据框中所有小于前一个值的值?
【发布时间】:2020-04-27 23:57:00
【问题描述】:

我的问题与我在 stackoverflow 上发布的另一个问题有关:Pandas: How can I check multiple columns if there are any values that are smaller than previous value?

现在我知道在我的数据框中有多个值小于之前的值,我想用之前的值替换那个值。

示例数据集:

    c     d     e
0   3     5     8  
1   1     5     8  
2   5     6     8  
3   6     7     8   
4   2     1     9  
5   9     3     3  

想要的结果:

    c     d     e
0   3     5     8
1   3     5     8
2   5     6     8
3   6     7     8
4   6     7     9
5   9     3     9

有没有什么方法可以用简单的 Python/Panda 代码行来完成这项任务?

【问题讨论】:

  • 您能否更具体地说明问题所在?请参阅How to Askhelp center。另外,你能以更方便的格式分享样本数据吗?

标签: python pandas


【解决方案1】:

您可以使用掩码和填充。如果您的数据框数据类型是浮点型,则不需要 '.astype(int)' 转换。

df.mask(df.diff().lt(0)).ffill().astype(int)

    c   d   e
0   3   5   8
1   3   5   8
2   5   6   8
3   6   7   8
4   6   7   9
5   9   3   9

【讨论】:

    【解决方案2】:

    df.cummax() 可以解决问题。

    【讨论】:

      猜你喜欢
      • 2019-12-05
      • 1970-01-01
      • 2020-11-19
      • 1970-01-01
      • 1970-01-01
      • 2020-11-07
      • 2021-06-29
      • 2017-03-23
      • 1970-01-01
      相关资源
      最近更新 更多