【发布时间】:2020-06-08 15:31:09
【问题描述】:
我的第一个问题...我有一个带有 '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'])
我尝试使用“参考”字符串的长度来分割“描述”列,例如
# like: df['Name'] = df['Description'].str[-10:]
df['Name'] = df['Description'].str[-(df['Reference'].str.len()):]
但我得到一个恒定的切片长度。
【问题讨论】:
标签: regex python-3.x pandas split