【问题标题】:How to make operations on pandas' Dataframe column based on condition in other column如何根据其他列中的条件对 pandas 的 Dataframe 列进行操作
【发布时间】:2019-11-04 01:12:05
【问题描述】:

例如:

   A  B
1  3  0
2  4  0
3  6  1
4  8  0

我想知道是否有一种简单的方法可以在 B 中有 1 时将例如 10 添加到 A 列的值。

我想要一个像下面这样的 df 输出。

   A  B
1  3  0
2  4  0
3  16 1
4  8  0

我找到了类似下面这行代码的东西,但是这个用 1 代替了 6,我想用那个 6 对其进行一些操作。

附言。请原谅我的英语

df.loc[df['B'] == 1, 'A'] = 1

【问题讨论】:

    标签: python pandas dataframe conditional-statements


    【解决方案1】:

    一种可能的解决方案是定义一个带有两个参数的函数:

    def cond_func(a,b):
        if b = 1:
            return a + 10
        else:
            return a
    

    然后应用到数据框中的每一行

    df['A'] = df.apply(lambda x: cond_func(x['A'], x['B'], axis=1)
    

    【讨论】:

      【解决方案2】:

      使用np.where

      df['A'] = np.where(df['B'] == 1,df['A'] + 10, df['A'])
      

      输出

          A  B
      1   3  0
      2   4  0
      3  16  1
      4   8  0
      

      【讨论】:

        【解决方案3】:

        你很亲密,使用10+=

        #short version
        df.loc[df['B'] == 1, 'A'] += 10
        #long version
        #df.loc[df['B'] == 1, 'A'] = 10 + df.loc[df['B'] == 1, 'A']
        print (df)
            A  B
        1   3  0
        2   4  0
        3  16  1
        4   8  0
        

        【讨论】:

        • 这也是df.loc[df['B'] == 1,'A'] = df['A'] + 10...介于你的短版和长版之间的东西:)
        猜你喜欢
        • 2023-03-28
        • 2021-04-29
        • 2016-10-23
        • 2020-04-25
        • 2020-05-30
        • 1970-01-01
        • 2020-07-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多