Использование ссылочного столбца для выбора между значениями строк в кадре данных? - PullRequest
3 голосов
/ 19 апреля 2019

У меня есть большой массив данных, состоящий из (1200, 10) в основном строки, где я должен добавить новый столбец, скажем «Z», на основе существующего справочного столбца, скажем «Y», значения которого «A», «B» или «C», из этого мне нужно выбрать один из трех соответствующих столбцов в df, скажем «D», «E» или «F», и добавить это значение в виде столбца «Z». Таким образом, существующая таблица будет выглядеть примерно так:

   ... T  G  D  E  F  K  ... Y
0   .  .  .  4  6  8  .  ... A
1   .  .  .  1  2  3  .  ... B
2   .  .  .  5  7  9  .  ... B

и требуется:

   ... T  G  D  E  F  K  ... Y  Z
0   .  .  .  4  6  8  .  ... A  4
1   .  .  .  1  2  3  .  ... B  2
2   .  .  .  5  7  9  .  ... B  7

Я довольно новичок в использовании панд, так что извините, если это кажется легкой проблемой!

Заранее спасибо!

1 Ответ

4 голосов
/ 19 апреля 2019

IIUC вам нужно DataFrame.lookup и Series.map с требованием сделать ваши пользовательские сопоставления.Что-то вроде:

df = pd.DataFrame({'T': {0: '.', 1: '.', 2: '.'}, 'G': {0: '.', 1: '.', 2: '.'}, 'D': {0: 4, 1: 1, 2: 5}, 'E': {0: 6, 1: 2, 2: 7}, 'F': {0: 8, 1: 3, 2: 9}, 'K': {0: '.', 1: '.', 2: '.'}, 'Y': {0: 'A', 1: 'B', 2: 'B'}, 'Z': {0: 4, 1: 2, 2: 7}})

d = {'A': 'D', 'B': 'E', 'C': 'F'}

df['Z'] = df.lookup(df.index, df.Y.map(d))

   T  G  D  E  F  K  Y  Z
0  .  .  4  6  8  .  A  4
1  .  .  1  2  3  .  B  2
2  .  .  5  7  9  .  B  7
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...