【问题标题】:Merge two columns when sign changes pandas符号更改熊猫时合并两列
【发布时间】:2022-11-18 23:26:02
【问题描述】:

我想将两列合并为一列,但我不确定如何有效地执行此操作。我的 df 看起来像这样:

col1   col2
 0.4   -0.9
 0.2   -0.5
-0.1    0.2
-0.2    0.4
 0.8   -0.6

因此,如果一列为正,则另一列始终为负。但我想将第 1 列中的所有负数替换为第 2 列中的所有正数。所以它看起来像这样:

col1   
 0.4   
 0.2   
 0.2
 0.4
 0.8  

如果你知道一个有效的解决方案,我将非常感激!!

【问题讨论】:

    标签: python pandas merge


    【解决方案1】:

    您可以使用:

    df['col1']=df[['col1','col2']].apply(lambda x: x['col2'] if x['col1']<0 else x['col1'],axis=1)
    df
    '''
       col1  col2
    0   0.4  -0.9
    1   0.2  -0.5
    2   0.2   0.2
    3   0.4   0.4
    4   0.8  -0.6
    '''
    

    删除 col2:

    df=df.drop(['col2'],axis=1)
    

    【讨论】:

      【解决方案2】:

      您可以对所有负值使用掩码,并用 col2 的值填充缺失值。

      m = df['col1'] < 0 
      df['col1'] = df['col1'].mask(m).fillna(df['col2'])
      print(df)
      
         col1  col2
      0   0.4  -0.9
      1   0.2  -0.5
      2   0.2   0.2
      3   0.4   0.4
      4   0.8  -0.6
      

      【讨论】:

        猜你喜欢
        • 2014-10-20
        • 1970-01-01
        • 1970-01-01
        • 2017-04-17
        • 2021-01-08
        • 1970-01-01
        • 2018-12-24
        • 1970-01-01
        • 2023-02-05
        相关资源
        最近更新 更多