В пределах фрейма данных скопируйте выбранные ячейки на основе критериев фильтра в другую строку в том же фрейме данных - PullRequest
0 голосов
/ 27 декабря 2018

Я хотел бы скопировать значение ячеек на основе фильтра другой ячейки в определенные строки

import pandas as pd

sales = {'Flight Number': ['LX2104', 'LX2104', 'LX2104', 'LX2105', 'LX2105', 'LX2105', 'LX2106', 'LX2106', 'LX2106'],
     'STD Departure': [0, 1, 2, 0, 1, 2, 0, 1, 2],
     'Bircher': [200, 210, 90, 40, 20, 10, 10, 30, 20],
     'Carac': [140, 215, 95,40, 50, 30, 40, 30, 50]}
df = pd.DataFrame.from_dict(sales)

Я хотел бы скопировать ячейки "Bircher" и "Carac" из строк с помощью "Номер рейса "LX2104" в строках с "номером рейса" LX2105 ". Значения в" Вылете STD "должны оставаться неизменными

1 Ответ

0 голосов
/ 27 декабря 2018

Вы можете сделать это, это может быть более визуально яснее:

df.loc[df['Flight Number'] == 'LX2104', 'Bircher'] = df[df['Flight Number'] == 'LX2105'].Bircher.values
df.loc[df['Flight Number'] == 'LX2104', 'Carac'] = df[df['Flight Number'] == 'LX2105'].Carac.values

Вывод:

  Flight Number  STD Departure  Bircher  Carac
0        LX2104              0     40.0     40
1        LX2104              1     20.0     50
2        LX2104              2     10.0     30
3        LX2105              0     40.0     40
4        LX2105              1     20.0     50
5        LX2105              2     10.0     30
6        LX2106              0     10.0     40
7        LX2106              1     30.0     30
8        LX2106              2     20.0     50

Также вы можете использовать, но я думаю, что это более неясно:

df.loc[df['Flight Number'] == 'LX2104', ['Bircher', 'Carac']] = df[df['Flight Number'] == 'LX2105'][['Bircher', 'Carac']].values

Я постараюсь объяснить этот код.Я использую df.loc[raw_index, column_index], чтобы получить фрагмент (правильные строки и столбцы).Этот df['Flight Number'] == 'LX2104' вернет логический массив с True-значениями, где номер рейса - LX2104, поэтому у нас есть необходимые необработанные строки, а затем я просто передаю имена столбцов, чтобы получить необходимые столбцы.В правой части я делаю то же самое, но с другим номером рейса.Будьте осторожны, если они имеют разную длину (количество строк), это не сработает.

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