Строка доступа на основе значения столбца - PullRequest
1 голос
/ 07 октября 2019

У меня есть следующий pandas dataframe:

data = {'ID': [1, 2, 3], 'Neighbor': [3, 1, 2], 'x': [5, 6, 7]}

Теперь я хочу создать новый столбец 'y', который для каждой строки является значением поля x из этой строки, на которую ссылается соседстолбец (т. е. тот столбец, идентификатор которого равен значению Neighbor), например: для строки 0 (ID 1) «Neighbor» равен 3, поэтому «y» должно быть 7. Таким образом, результирующий кадр данных должен иметь столбец y = [7, 5, 6]. Могу ли я решить эту проблему без использования df.apply? (Поскольку это занимает довольно много времени для моих больших фреймов данных.) Я хотел бы использовать sth вроде

df.loc[:, 'y'] = df.loc[df.Neighbor.eq(df.ID), 'x']}

, но это возвращает NaN.

1 Ответ

1 голос
/ 07 октября 2019

мы можем передать дикт из ваших столбцов ID и X, а затем сопоставить их с вашим новым столбцом

your_dict_ = dict(zip(df['ID'],df['x']))
print(your_dict_)
{1: 5, 2: 6, 3: 7}

Затем мы можем использовать .map, чтобы передать эти столбцы с помощью Neighbor столбец в качестве ключа.

df['Y'] = df['Neighbor'].map(your_dict_)
print(df)
    ID  Neighbor  x  Y
0   1         3  5  7
1   2         1  6  5
2   3         2  7  6
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...