使用Regex在熊猫中拆分列

问题描述 投票:0回答:1

我的第一个问题...我有一个列'Description'的Pandas数据框。该列有一个引用和一个名称,我想分为两列。我在单独的df中有'Names'

#  Description                                   #  Names
---------------------------------------          ---------------
0  A long walk by Miss D'Bus                     0  Teresa Green
1  A day in the country by Teresa Green          1  Tim Burr
2  Falling Trees by Tim Burr                     2  Miss D'Bus
3  Evergreens by Teresa Green
4  Late for Dinner by Miss D'Bus

我已经通过使用带有所有名称的正则表达式字符串来成功搜索描述以确定其名称是否匹配:

regex = '$|'.join(map(re.escape, df['Names'])) + '$' 
df['Reference'] = df['Description'].str.split(regex, expand=True)

获取

#  Description                                   Reference
-----------------------------------------------------------------------
0  A long walk by Miss D'Bus                     A long walk by
1  A day in the country by Teresa Green          A day in the country by
2  Falling Trees by Tim Burr                     Falling Trees by
3  Evergreens by Teresa Green                    Evergreens by
4  Late for Dinner by Miss D'Bus                 Late for Dinner by

但是我希望将相应的(=删除的定界符)名称作为附加列。

它尝试添加*?到this等正则表达式

我尝试通过使用“参考”列拆分“描述”列

df['Name'] = df['Description'].str.split(df['Reference'])

我尝试通过使用'Reference'字符串的长度来对'Description'列进行切片

# like: df['Name'] = df['Description'].str[-10:]
df['Name'] = df['Description'].str[-(df['Reference'].str.len()):]

但是我得到一个恒定的切片长度。

我的第一个问题...我有一个带有“说明”列的Pandas数据框。该列有一个引用和一个名称,我想分为两列。我在单独的df中有“名称”:#...

regex python-3.x pandas split
1个回答
0
投票

如果所有字符串都遵循相同的模式,最好将字符串的一部分取到最后的by like so

© www.soinside.com 2019 - 2024. All rights reserved.