我在Pandas数据框中具有以下格式的数据:
广告系列|支出|
L003-FL-巴拿马| 800 |
L015,L020 CA-兰乔| 600 |
我需要的是在“广告系列”列中以大写字母“ L”开头并以三位数结尾的每个值附加到新列中。更复杂的是,如果广告系列列中的字符串中有多种这种格式的值,那么我需要将每个值都列在其自己的新行中。
输出如下:
广告系列|支出|商店
L003-FL-巴拿马| 800 | L003
L015,L020 CA-兰乔| 600 | L015
L015,L020 CA-兰乔| 600 | L020
抱歉,如果这没有道理,请告诉我是否可以澄清。
答案 0 :(得分:2)
您可以使用extractall
然后合并到原始数据框
df.reset_index().merge(df.Campaign.str.extractall('(\\bL\\d{3})').reset_index(),
left_on='index',right_on = 'level_0').drop(['index','level_0','match'],
axis = 1).rename({0:'store'},axis = 1)
Out[65]:
Campaign Spend store
0 L003-FL-Panama 800 L003
1 L015, L020 CA- Rancho 600 L015
2 L015, L020 CA- Rancho 600 L020