Выберите столбец на основе значения другого столбца с помощью Pandas - PullRequest
1 голос
/ 28 октября 2019

С фреймом данных Pandas, структурированным следующим образом:

              color    price_blue   price_red   price_green
date
2019-01-01    green            10          20            30
2019-01-02      red            40          50            60
2019-01-03     blue            11          12            13

Как мы можем добавить столбец price на основе значения столбца color для каждой строки:

              color    price_blue   price_red   price_green    price
date
2019-01-01    green            10          20            30       30
2019-01-02      red            40          50            60       50
2019-01-03     blue            11          12            13       11

Хотя apply -подобное решение кажется достаточно простым, в этом случае требуется векторизованное решение, так как набор данных является относительно большим.

Кроме того, такие решения, как np.where, прекрасно работают только с несколькими цветамиОднако в реальном случае существует более 20 различных «цветов», поэтому в конечном итоге это будет практически нецелесообразно с большим количеством вложенных where.

1 Ответ

5 голосов
/ 28 октября 2019

Используйте DataFrame.lookup с добавлением price_ к столбцу color для сопоставления по именам столбцов:

df['price'] = df.lookup(df.index, 'price_' + df['color'])
print (df)
            color  price_blue  price_red  price_green  price
2019-01-01  green          10         20           30     30
2019-01-02    red          40         50           60     50
2019-01-03   blue          11         12           13     11
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...