【问题标题】:if df.A=0 & df.b=1 then df.c=1/ pandas pythonif df.A=0 & df.b=1 then df.c=1/ pandas python
【发布时间】:2021-10-03 19:24:18
【问题描述】:

df:

A  B
0  1
1  1
0  0

目标:如果 df.A=0 & df.B=1 则创建列 C=1 否则不返回任何内容。结果应该是: df:

A  B  C
0  1  1
1  1
0  0
0  1  1

我当前的代码给出了这个错误:“ValueError:DataFrame 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all() 。”

df['C'] = df.apply(lambda x: 1 if df.A==0 and df.B==1 else '', axis=1)

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    试试:

    m=(df['A'].eq(0)) & (df['B'].eq(1))
    #Finally:
    df['C'] =m.astype(int).replace(0,'')
    

    #import numpy as np
    m=(df['A'].eq(0)) & (df['B'].eq(1))
    df['C']=np.where(m,1,'')
    

    对于您当前的方法,请按位使用&x[column name]

    df['C']=df.apply(lambda x: 1 if (x['A']==0) & (x['B']==1) else '', axis=1)
    

    【讨论】:

      【解决方案2】:

      您可以使用异或运算符^replace

      df["C"] = (df.A ^ df.B).replace(0, '')
      df
         A  B  C
      0  0  1  1
      1  1  1
      2  0  0
      3  0  1  1
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-08-31
        • 2019-07-31
        • 1970-01-01
        • 1970-01-01
        • 2018-09-06
        • 2018-09-26
        • 2017-11-28
        • 1970-01-01
        相关资源
        最近更新 更多