Извлеките числовое значение в 1 столбце и добавьте его в новый индекс в разобранном индексе. - PullRequest
0 голосов
/ 29 августа 2018

Большое спасибо за вашу помощь, У меня есть большая проблема, что у меня есть фрейм данных, как показано ниже:

Name | Book | Location 
A    | Mobile| Hai Long St. 123
B    | Sim   | Aha 123/456,78;9

Я бы хотел отделиться, как показано ниже:

Name | Book | Location 
A    | Mobile| 123
B    | Sim   | 123
B    | Sim   | 456
B    | Sim   | 78
B    | Sim   | 9

Как я могу это сделать в python, я понятия не имею для этого. Спасибо за вашу поддержку.

1 Ответ

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

Я бы использовал extractall, чтобы найти все числовые значения в Location:

>>> df.Location.str.extractall('(\d+)')
           0
  match     
0 0      123
1 0      123
  1      456
  2       78
  3        9

Затем вы можете присоединить это обратно к вашему исходному фрейму данных, используя первый уровень индекса вывода extractall выше. Ниже приведен код для получения желаемого результата:

new_df = (df.drop('Location', axis=1)
          .join(df.Location.str.extractall('(\d+)')
                .reset_index(level=1,drop=True))
          .rename(columns={0:'Location'}))

>>> new_df
  Name    Book Location
0    A  Mobile      123
1    B     Sim      123
1    B     Sim      456
1    B     Sim       78
1    B     Sim        9
...