Вычислить новый столбец в pandas, используя условие для других столбцов

#python #pandas

#python #pandas

Вопрос:

У меня есть фрейм данных, который выглядит следующим образом

 pd.DataFrame({'A': [5, 2, -3],
   ...:       'B': [9, -1, 7],
   ...:       'C': [-5, 2, -6]})
Out[28]: 
   A  B  C
0  5  9 -5
1  2 -1  2
2 -3  7 -6
  

Я хотел бы сделать следующее

x > 0 -> (1 x)

x < 0 -> (1-x)^-1 (в степени -1)

а затем суммировать все столбцы.

результирующий фрейм данных должен выглядеть следующим образом

    A  B  C   D        Logic
0  5  9 -5  16.1667   (1 5) (1 9) ((1-(-5))^-1)
1  2 -1  2  6.5       (1 2) ((1-(-1))^-1) (1 2)
2 -3  7 -6  8.3929    ((1-(-3)^-1) (1 7) ((1-(-6))^-1)
  

Ответ №1:

Здесь вы идете с np.where :

 df['D'] = np.where(df>0, 1 df, 1/(1-df)).sum(1)
  

Вывод:

    A  B  C          D
0  5  9 -5  16.166667
1  2 -1  2   6.500000
2 -3  7 -6   8.392857