首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python pandas解析记录

Python pandas解析记录
EN

Stack Overflow用户
提问于 2018-08-10 07:54:07
回答 4查看 93关注 0票数 0

我需要解析数据帧中的数据,消除所有不在括号中的数据,然后将这些数据移动到新列。理想情况下,如果可以在新专栏中删除括号,那也是很好的,但我认为这两种结果都将创建预期的解决方案:

代码语言:javascript
复制
current column                                  new column
/reports/industry(5315)/2018                    (5315)
/reports/limit/sector(139)/2017                 (139)
/reports/sector/region(147,189 and 132)/2018    (147,189 and 132)

谢谢你,任何你能给出的方向都会很棒!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-08-10 08:02:09

IIUC摘录

代码语言:javascript
复制
df.current.str.extract('.*\((.*)\).*',expand=True)
Out[785]: 
               0
0           5315
1            139
2147,189 and 132
票数 2
EN

Stack Overflow用户

发布于 2018-08-10 08:00:07

您可以使用如下所示的regex来完成此操作:

代码语言:javascript
复制
old_col = ['/reports/industry(5315)/2018', '/reports/limit/sector(139)/2017', '/reports/sector/region(147,189 and 132)/2018']
df = pd.DataFrame(old_col, columns=['current_column'])
df['new_column'] = df['current_column'].str.extract(r'\((.*)\)')

输出如下所示:

代码语言:javascript
复制
current_column                                       new_column
0   /reports/industry(5315)/2018                        5315
1   /reports/limit/sector(139)/2017                      139
2   /reports/sector/region(147,189 and 132)/2018    147,189 and 132
票数 1
EN

Stack Overflow用户

发布于 2018-08-10 07:58:56

代码语言:javascript
复制
>>> import re
>>> re.sub('.*(\(.*\)).*', '\\1', '/reports/industry(5315)/2018')
'(5315)'

完整的示例

代码语言:javascript
复制
import pandas as pd
import re


old_col = ['/reports/industry(5315)/2018', '/reports/limit/sector(139)/2017', '/reports/sector/region(147,189 and 132)/2018']
df = pd.DataFrame(old_col, columns=['current_column'])


def grab_dat(x):
    dat = re.sub('.*(\(.*\)).*', '\\1', x)
    return(dat)


df['new_col'] =  df['current_column'].apply(grab_dat)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51777179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档