【问题标题】:row substraction in lambda pandas dataframelambda pandas数据框中的行减法
【发布时间】:2018-02-27 07:21:32
【问题描述】:

我有一个包含多列的数据框。其中一列是累积收入列。如果该年未结束,则该期间剩余时间的收入将保持不变,因为即将到来的每日收入为 0。

数据框如下所示

现在我想创建一个新列,其中该行被最后一行减去,如果结果为 0,则在新列中为该行打印 0。如果不为零,则使用行值。新的数据框应如下所示:

我的想法是使用 apply lambda 方法来做到这一点。所以这是这样的想法:

{df['2017new'] = df['2017'].apply(lambda x: 0 if row - lastrow == 0 else x)}

但我不知道如何编写代码的行 - lastrow 部分。这个怎么做?提前致谢!

【问题讨论】:

    标签: python-3.x pandas dataframe lambda apply


    【解决方案1】:

    通过使用np.where

    df2['New']=np.where(df2['2017'].diff().eq(0),0,df2['2017'])
    df2
    Out[190]: 
       2016  2017  New
    0    10    21   21
    1    15    34   34
    2    70    40   40
    3    90    53   53
    4    93    53    0
    5    99    53    0
    

    【讨论】:

      【解决方案2】:

      我们可以根据条件使用np.where移动数据并填充值,即

      df['new'] = np.where(df['2017']-df['2017'].shift(1)==0,0,df['2017'])
      

      df.where

      df['new'] = df['2017'].where(df['2017']-df['2017'].shift(1)!=0,0)
      
      2016 2017 新 0 10 21 21 1 15 34 34 2 70 40 40 3 90 53 53 4 93 53 0 5 99 53 0

      【讨论】:

        猜你喜欢
        • 2017-04-15
        • 2018-09-11
        • 1970-01-01
        • 2022-01-08
        • 2015-01-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-16
        相关资源
        最近更新 更多