Панды добавить новый столбец с условиями - PullRequest
0 голосов
/ 26 октября 2018

У меня есть такой фрейм данных для панд:

ID PRICE SALES COST
1   10     10   5
2   10      5   3
3   10      5
4   10     
5   10      4   2

Ожидаемый результат: я хочу добавить новый столбец, и он рассчитывается так: ЦЕНА / (ПРОДАЖА - СТОИМОСТЬ) Как справиться с ситуациейкогда (ПРОДАЖА - СТОИМОСТЬ) 0?Я хочу оставить это поле пустым.

ID  PRICE  SALES COST  P/E
1   10     10    5     2
2   10      5    3     5
3   10      5          2
4   10     
5   10      4    2     5

Спасибо за любые предложения!

Ответы [ 2 ]

0 голосов
/ 27 октября 2018

Не проверено, но другим способом может быть:

df['gross'] = df['SALES'].fillna(0) - df['COST'].fillna(0)

Тогда

df.loc[df['gross'] != 0, 'P/E'] = df['Price'] / df['gross']

Одной строкой версии выше может быть:

df.loc[(df['SALES'].fillna(0) - df['COST'].fillna(0)) != 0, 'P/E'] = df['Price'] / df['gross']
0 голосов
/ 26 октября 2018

Я бы сделал это в два этапа: сначала fillna с 0, а затем разделил:

t = df.fillna(0)
s = t.SALES - t.COST

df.assign(PE=t.PRICE.div(s).where(s.ne(0)))

   ID  PRICE  SALES  COST   PE
0   1     10   10.0   5.0  2.0
1   2     10    5.0   3.0  5.0
2   3     10    5.0   NaN  2.0
3   4     10    NaN   NaN  NaN
4   5     10    4.0   2.0  5.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...