如何将dataframe列传递到CommonRegex

2024-04-27 17:33:53 发布

您现在位置:Python中文网/ 问答频道 /正文

如何将datafarme列传递到commonregex libraray中,并隐藏与regex值匹配的数据

    from commonregex import CommonRegex

    address = ['61 Park Street, Camden, ME, 04843, US', '1208 BEECHCRAFT BLVD','6704 BEECHCRAFT', 'PO BOX 469', '6461 44TH AVE' , '11026 BELLE HAVEN DR']
    df = pd.DataFrame(address, columns = ['Address'])
    parser = CommonRegex()
    parser.street_addresses(df.Address)

它抛出错误

 ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().


df['new'] = df.Address.apply(lambda x: next(iter(parser.street_addresses(x)), ''))
print (df)
                                 Address                  new
0  61 Park Street, Camden, ME, 04843, US      XXXXXXXXXXXXXXX
1                   1208 BEECHCRAFT BLVD                     
2                        6704 BEECHCRAFT                     
3                             PO BOX 469                     
4                          6461 44TH AVE        XXXXXXXXXXXXX
5                   11026 BELLE HAVEN DR  XXXXXXXXXXXXXXXXXXX

Tags: boxparserstreetparkdfaddresspome
1条回答
网友
1楼 · 发布于 2024-04-27 17:33:53

使用^{}

df['new'] = df.Address.apply(parser.street_addresses)

或:

df['new'] = df.Address.apply(lambda x: parser.street_addresses(x))

list comprehension

df['new'] = [parser.street_addresses(x) for x in df.Address]

print (df)
                                 Address                    new
0  61 Park Street, Camden, ME, 04843, US      [61 Park Street,]
1                   1208 BEECHCRAFT BLVD                     []
2                        6704 BEECHCRAFT                     []
3                             PO BOX 469                     []
4                          6461 44TH AVE        [6461 44TH AVE]
5                   11026 BELLE HAVEN DR  [1026 BELLE HAVEN DR]

如果想要第一个匹配值,则在空列表中为可能的匹配默认值添加nextiter

df['new'] = df.Address.apply(lambda x: next(iter(parser.street_addresses(x)), ''))
print (df)
                                 Address                  new
0  61 Park Street, Camden, ME, 04843, US      61 Park Street,
1                   1208 BEECHCRAFT BLVD                     
2                        6704 BEECHCRAFT                     
3                             PO BOX 469                     
4                          6461 44TH AVE        6461 44TH AVE
5                   11026 BELLE HAVEN DR  1026 BELLE HAVEN DR

或者如果需要使用分隔符连接列表中所有可能的值:

df['new'] = df.Address.apply(parser.street_addresses).str.join(', ')

相关问题 更多 >