在熊猫表中拆分文本

时间:2018-04-19 03:05:24

标签: python pandas

我有一个像这样的熊猫表:

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

基本上我想要“分割”标签,如果它们包含的一段文字出现在系列中。

1 个答案:

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