Панды: Изменить одну серию, используя вторую с тем же индексом - PullRequest
1 голос
/ 30 марта 2012

В последнее время я работаю с двумя Сериями в пандах:

  • Первая серия содержит чисто числовые данные
  • Вторая серия содержит категориальные данные: «Плюс», «Минус» и NaN.

Пример данных:

first_series = pandas.Series([0.000003, 0.004991, 0.004991])
second_series = pandas.Series(["Plus", "Minus", np.nan], dtype="object",
                              index=first_series.index)

(в реальном сценарии вторая серия создается программно с использованием того же индекса, что и первый, но здесь это только упрощенный пример)

Сначала я делаю некоторые манипуляции:

first_series = np.log2(1 / first_series)

Тогда мне нужно будет инвертировать знак (умножить на -1) соответствующих записей «минус» и повернуть на NaN те, которые во второй серии NaN.

Последняя часть работает нормально:

first_series[np.invert(second_series.notnull())] = np.nan

print first_series

0    18.567557
1     7.646459
2          NaN
Name: Example data

Однако я немного застрял с первой частью. Как я могу использовать информацию во второй Серии (учитывая, что они индексируются одинаково) для переключения знака в первой Серии?

Для справки после приложения first_series должен выглядеть так:

0    18.567557
1    -7.646459
2          NaN
Name: Example data

1 Ответ

2 голосов
/ 30 марта 2012
first_series[second_series == 'Minus'] *= -1
first_series[second_series.isnull()] = np.nan

дает вам:

0    18.346606
1    -7.646455
2          NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...