Как объединить или объединить столбцы из двух данных в зависимости от условия? - PullRequest
0 голосов
/ 22 апреля 2020

Я новичок в pyspark. У меня есть следующие два фрейма данных

df1 =


userId  jobTitleName    firstName   lastName    preferredFullName       employeeCode    CityName            
137 Audiologist Tyson   Addison     Tyson       Addison                 516-46-5443     South Creek     
338 Loan Officer        Cameron     Upton       Cameron Upton           844-52-3684     Hot Springs     
366 Restaurant Manager  Peter       Lambert     Peter Lambert           665-33-0160     Beatty          
520 Cashier Kaylee      Hood        Kaylee      Hood                    357-02-4038     Gig Harbor 
234 Loan Officer        Mike        john        Mike Johon              644-52-3684     South Creek          


df2=

State Lookup Table

CityName    StateID StateName
South Creek WA  Washington
Hot Springs MO  New Mexico
Beatty      OR  Nevada
Gig Harbor  WA  Washington
Okreek      SD  South Dakota
Elsmore     KS  Kansas
Wortham     MS  Texas

Здесь я пытаюсь посмотреть состояние в df2 на основе региона в df1 и создать новый Df следующим образом

Ожидается

df3 =



userId  jobTitleName    firstName   lastName    preferredFullName       employeeCode    CityName        StateName
137 Audiologist Tyson   Addison     Tyson       Addison                 516-46-5443     South Creek     Washington
338 Loan Officer        Cameron     Upton       Cameron Upton           844-52-3684     Hot Springs     New Mexico
366 Restaurant Manager  Peter       Lambert     Peter Lambert           665-33-0160     Beatty          Nevada
520 Cashier Kaylee      Hood        Kaylee      Hood                    357-02-4038     Gig Harbor      Washington
234 Loan Officer        Mike        john        Mike Johon              644-52-3684     South Creek     Washington

Я попытался соединиться, чтобы получить вывод следующим образом:

joinDF=df1.join(df2, df1.region==df2.CityName, how='left')

Фактический вывод


userId  jobTitleName    firstName   lastName    preferredFullName       employeeCode    CityName        StateName
137 Audiologist Tyson   Addison     Tyson       Addison                 516-46-5443     South Creek     Washington
338 Loan Officer        Cameron     Upton       Cameron Upton           844-52-3684     Hot Springs     Montana
366 Restaurant Manager  Peter       Lambert     Peter Lambert           665-33-0160     Beatty          Oregon
520 Cashier Kaylee      Hood        Kaylee      Hood                    357-02-4038     Gig Harbor      Washington
234 Loan Officer        Mike        john        Mike Johon              644-52-3684     South Creek     Washington     
338 Loan Officer        Cameron     Upton       Cameron Upton           844-52-3684     Hot Springs     Montana

Как вы видели, city ​​не сопоставляется с соответствующим именем штата из df2, а также строка 'Loan Officer' повторяется два раза, даже если она уже обновлена ​​для идентификатора пользователя (338). Каков будет подход к решению проблемы такого рода?

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