在1列中提取数值并将其添加到已解析索引下的新索引中

时间:2018-08-29 16:26:50

标签: python dataframe split extract numeric

非常感谢您的帮助, 我有一个大的问题,我有如下数据框:

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 :(得分:0)

我将使用extractallLocation中查找所有数值:

>>> 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