Python 基于其他列集和IF-THEN条件创建一组新列

Python 基于其他列集和IF-THEN条件创建一组新列,python,pandas,Python,Pandas,我需要基于另外两组列和附加的IF-THEN条件创建第三组列。这是可行的,但我不确定如何引入一个条件,将除法限制为仅对列表a和列表B都大于零的行。换句话说,我只想在集合A和B中的数字都大于零时执行计算,因为这是使除法有意义的条件。如果列表A或B为零,那么我希望列表C为零。我尝试了NumPy where方法,但我遇到了错误。非常感谢。下面是一个例子 dates = pd.date_range('1/1/2000', periods=100, freq='M') dft = pd.DataFrame(

我需要基于另外两组列和附加的IF-THEN条件创建第三组列。这是可行的,但我不确定如何引入一个条件,将除法限制为仅对列表a和列表B都大于零的行。换句话说,我只想在集合A和B中的数字都大于零时执行计算,因为这是使除法有意义的条件。如果列表A或B为零,那么我希望列表C为零。我尝试了NumPy where方法,但我遇到了错误。非常感谢。下面是一个例子

dates = pd.date_range('1/1/2000', periods=100, freq='M')
dft = pd.DataFrame(np.random.randn(100, 4),index=dates, columns=['var_A1', 
'var_A2', 'var_B1', 'var_B2'])
list_A=['var_A1', 'var_A2']
list_B=['var_B1', 'var_B2']
list_C=['var_C1', 'var_C2']
C=pd.DataFrame(data=dft[list_A].values/dft[list_B].values,columns=list_C,
index=dft.index) 
dft=pd.concat([dft,C],axis=1)   
c=pd.DataFrame(data=np.where((dft[list_A].values>0)和(dft[list_B].values>0)),dft[list_A].values/dft[list_B].values,0),columns=list_c,index=dft.index)
dft=pd.concat([dft,c],axis=1)

您得到的错误是什么?您可以尝试:
dft['var\u C1']=np.where(dft['var\u C1']<0,0,dft['var\u C1'])