Панды - Найти строку выброса между двумя информационными рамками, если смотреть только на определенные столбцы - PullRequest
0 голосов
/ 31 августа 2018

У меня есть два кадра данных - один, который редактируется пользователями из Powerapp. Другой, который исходит непосредственно от onedrive.

Заголовки столбцов почти одинаковы, и мне нужно сравнить два фрейма данных и добавить любые новые строки в фрейм данных, полученный из powerapps. Вот два примера кадра данных:

Фрейм данных Powerapps:

          Send/Collect            Hospital   Courier                      Kit                      Manufacturer  Status
0                Send     Nuffield Ipswich   Courier  ActivMotion (HTO - DFO)        NewClip Hire Log 2018.xlsx  Not Started
1                 Send         BMI Rosshal   Courier  ActivMotion (HTO - DFO)        NewClip Hire Log 2018.xlsx  In Progress
2              Collect       Stepping Hill   Courier  ActivMotion (HTO - DFO)        NewClip Hire Log 2018.xlsx  Not Started
3              Collect       York District  Courier   ActivMotion (HTO - DFO)        NewClip Hire Log 2018.xlsx  Not Started
4  Royal Devon Exeter                  NaN       NaN  ActivMotion (HTO - DFO)        NewClip Hire Log 2018.xlsx  Not Started
5              collect       Spire Bristol  Courier   ActivMotion (HTO - DFO)        NewClip Hire Log 2018.xlsx  Complete
6                 Send         Bridlington  Courier        ToeMotion - MTP DF  Arthrosurface Hire Log 2018.xlsx  Not Started
7   Send Femoral Head    Hampshire Clinic        DHL             Human Tissue             Human Tissue Log.xlsx   Not Started

Фрейм данных Onedrive:

          Send/Collect            Hospital   Courier                      Kit                      Manufacturer
0                Send     Nuffield Ipswich   Courier  ActivMotion (HTO - DFO)        NewClip Hire Log 2018.xlsx
1                 Send         BMI Rosshal   Courier  ActivMotion (HTO - DFO)        NewClip Hire Log 2018.xlsx
2              Collect       Stepping Hill   Courier  ActivMotion (HTO - DFO)        NewClip Hire Log 2018.xlsx
3              Collect       York District  Courier   ActivMotion (HTO - DFO)        NewClip Hire Log 2018.xlsx
4  Royal Devon Exeter                                 ActivMotion (HTO - DFO)        NewClip Hire Log 2018.xlsx
5              collect       Spire Bristol  Courier   ActivMotion (HTO - DFO)        NewClip Hire Log 2018.xlsx
6  Royal Devon Exeter                                 ActivMotion (HTO - DFO)        NewClip Hire Log 2018.xlsx
7                 Send         Bridlington  Courier        ToeMotion - MTP DF  Arthrosurface Hire Log 2018.xlsx
8   Send Femoral Head    Hampshire Clinic        DHL             Human Tissue             Human Tissue Log.xlsx 

Как видите, в фрейме данных powerapps есть другой столбец (который может содержать разные значения, а не только "не запущен"), в то время как в фрейме данных onedrive есть дополнительная строка (которая должна входить в Powerapps df).

Также обратите внимание, что в пустом ячейке на одном информационном кадре есть строка "", но в Powerapps это Nan.

Мне нужно объединить дополнительную строку из onedrive в powerapps (добавив в эту строку статус «Не начато»). Я думаю, что мне нужен метод, который будет объединяться на основе сходства, найденного в столбцах 0,3 и 4, игнорируя при этом столбцы 1,2 и 5. Как бы я это сделал?

1 Ответ

0 голосов
/ 31 августа 2018

Я думаю, что Конкат подходит здесь

#replacing all the spaces with nan in the onedrive dataframe
onedrive.replace('""', 'nan') #use np.nan accordingly
powerapp = pd.concat([onedrive, powerapp])

powerapp.Status.fillna('Not Started', inplace=True)

Удалить избыточные данные на основе подмножества столбцов.
Примечание: сбросить индекс после объединения

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