我有一个像这样的熊猫表:
ID | Tag
1 | up down
2 | right-left
3 | summerfivehigh
4 | up a right b left
我有一个带有以下单词的熊猫系列(请注意,'fivehigh'故意遗漏):
up, down, right, left, summer
我想根据系列中的单词拆分ID行,如下所示:
ID | Tag
1 | up
1 | down
2 | right
2 | left
3 | summer
3 | fivehigh
4 | up
4 | a
4 | right
4 | b
4 | left
基本上我想要“分割”标签,如果它们包含的一段文字出现在系列中。
答案 0 :(得分:3)
您可以将extractall
与列表中的正则表达式构建结合使用。
df = pd.DataFrame({'ID':[1,2,3],'Tag':['up down','right-left','summerfivehigh']})
l = ['up','down','right','left','summer']
rege = '(\w+)?('+'|'.join(l)+')(\w+)?'
df = df.set_index('ID')
df.Tag.str.extractall(rege).stack().reset_index([1,2], drop=True)
输出:
ID
1 up
1 down
2 right
2 left
3 summer
3 fivehigh
dtype: object