开发者社区> 问答> 正文

根据条件更新两个数据框列

我有一个数据框,列为“ PK”,“ Column1”,“ Column2”。我要更新Column1和Column2如下:

If Column1 > Column2 then (Column1 = Column1 - Column2) and at the same time Column2 = 0

相似地

If Column1 < Column2 then (Column2 = Column2 - Column1) and at the same time Column1 = 0

我尝试了以下操作,但未给出预期结果:

df["Column1"] = np.where(df['Column1'] > df['Column2'], df['Column1'] - df['Column2'], 0)
df["Column2"] = np.where(df['Column1'] < df['Column2'], df['Column2'] - df['Column1'], 0)

问题来源:stackoverflow

展开
收起
is大龙 2020-03-23 23:55:32 401 0
1 条回答
写回答
取消 提交回答
  • 使用DataFrame.assign可以避免在代码的第二行中测试被覆盖的列Column1

    df = pd.DataFrame({
             'Column1':[4,5,4,5,5,4],
             'Column2':[7,8,9,4,2,3],
    
    })
    print (df)
       Column1  Column2
    0        4        7
    1        5        8
    2        4        9
    3        5        4
    4        5        2
    5        4        3
    
    a = np.where(df['Column1'] > df['Column2'], df['Column1'] - df['Column2'], 0)
    b = np.where(df['Column1'] < df['Column2'], df['Column2'] - df['Column1'], 0)
    
    df = df.assign(Column1 = a, Column2 = b)
    print (df)
       Column1  Column2
    0        0        3
    1        0        3
    2        0        5
    3        1        0
    4        3        0
    5        1        0
    

    回答来源:stackoverflow

    2020-03-23 23:55:38
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载