首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于regex参数将Dataframe列分离为多列

基于regex参数将Dataframe列分离为多列
EN

Stack Overflow用户
提问于 2018-10-14 12:03:44
回答 2查看 302关注 0票数 1

熊猫在这里。删除每个团队记录并将其放入新列的最佳方法是什么?提前感谢!

代码语言:javascript
复制
    Rank    Team    
0   1       LA Rams (5-0)   
1   2       New Orleans (4-1)   
2   3       New England (3-2)   
3   4       Kansas City (5-0)   
4   5       Pittsburgh (2-2-1)  
5   6       Baltimore (3-2) 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-14 12:15:23

有趣的问题。

不幸的是,Series.str.extract会很容易地获取记录,但不会删除它(使用天真的正则表达式,如果团队的名称中包含(...),可以随意使用更复杂的正则表达式):

代码语言:javascript
复制
df['Record'] = df['Team'].str.extract('(\(.*?\))')
print(df)
#    Rank                Team   record
#  0    1       LA Rams (5-0)    (5-0)
#  1    2   New Orleans (4-1)    (4-1)
#  2    3   New England (3-2)    (3-2)
#  3    4   Kansas City (5-0)    (5-0)
#  4    5  Pittsburgh (2-2-1)  (2-2-1)
#  5    6     Baltimore (3-2)    (3-2)

这将要求我们履行自己的职能:

代码语言:javascript
复制
import re

record_regex = re.compile(r'(\(.*?\))')

records = []

def extract_and_remove_record(x):
    record = record_regex.findall(x)[0]
    records.append(record)
    return record_regex.sub('', x)

df['Team'] = df['Team'].apply(extract_and_remove_record)
df['Record'] = records

print(df)
#    Rank          Team  Records
#  0    1      LA Rams     (5-0)
#  1    2  New Orleans     (4-1)
#  2    3  New England     (3-2)
#  3    4  Kansas City     (5-0)
#  4    5   Pittsburgh   (2-2-1)
#  5    6    Baltimore     (3-2)
票数 0
EN

Stack Overflow用户

发布于 2018-10-14 12:27:19

另一种不涉及正则表达式的方法。

代码语言:javascript
复制
df[['Team Name', 'Team Records']] = d.Team.apply(lambda x: pd.Series(x.rstrip(')').split(' (')))
df.drop('Team', axis=1, inplace=True)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52802428

复制
相关文章

相似问题

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