Создание вычисляемого столбца (с оператором If) в Python с использованием фрейма данных, извлеченного из Postgres - PullRequest
0 голосов
/ 18 января 2019

довольно плохо знаком с Python, и я пытаюсь создать вычисляемый столбец на моем DataFrame, используя функцию If.

Я пытался использовать поля, на которые прямо ссылаются из DataFrame, а также назначать их переменным и преобразовывать их в серии (как показано в моем коде ниже):

f4 = (DataFrame извлечен из моей базы данных Postgres с использованием pscyopg2 и SQL-запроса) (379, 7)

n = f4['id']

wv = f4['watermark_value']

anet = f4['a_net_revenue']

bnet = f4['b_net_revenue']

def adj_calc():

    return anet-bnet-wv if bnet-wv<0 else bnet-wv

f4['watermark_adj'] = adj_calc()

Я получаю следующую ошибку: «ValueError: Значение истинности Серии неоднозначно. Используйте a.empty, a.bool (), a.item (), a.any () или a.all ().»

Благодаря моим исследованиям я обнаружил, что вы можете столкнуться с проблемами в Pandas при попытке выполнить вычисления непосредственно из DataFrame, но мне трудно найти решение или информацию о том, какой тип данных мне следует использовать. используйте вместо

По сути, я пытаюсь создать вычисляемый столбец в файле данных f4, который следует логике выше.

Спасибо!

1 Ответ

0 голосов
/ 18 января 2019

Сначала создайте новую серию s с вычитанием, а затем используйте numpy.where или where:

s = bnet-wv
f4['watermark_adj'] = np.where(s<0, anet-s, s)

Или:

s = bnet-wv
f4['watermark_adj'] = s.where(s<0, anet-s)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...