根据其他列集并根据IF THEN条件创建一组新列

时间:2018-12-28 18:49:19

标签: python pandas

我需要基于其他两组列并基于附加的IF THEN条件创建第三组列。它可以工作,但是我不确定如何引入将除法限制为仅list_A和list_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)   

1 个答案:

答案 0 :(得分:0)

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)