首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在pandas中拆分不同列中的多行

如何在pandas中拆分不同列中的多行
EN

Stack Overflow用户
提问于 2018-08-16 04:46:15
回答 4查看 380关注 0票数 1

在下面的例子中,我有电影的数据:

我想将标题列值拆分为两个新列,即其中一个新列(“电影标题")将以=玩具故事作为行值,另一个新列(”年“)将以=1995作为行值。

如何对整个数据帧进行此操作?

代码语言:javascript
复制
                            title  \
0                    Toy Story (1995)   
1                      Jumanji (1995)   
2             Grumpier Old Men (1995)   
3            Waiting to Exhale (1995)   
4  Father of the Bride Part II (1995) 
EN

回答 4

Stack Overflow用户

发布于 2018-08-16 04:55:22

尝试将字符串访问器与split一起使用,使用查找空格和左括号或右括号的正则表达式:

代码语言:javascript
复制
df.title.str.split('\s\(|\)',expand=True)
  .drop(2, axis=1)
  .set_axis(['movies','year'], inplace=False, axis=1)

输出:

代码语言:javascript
复制
                        movies  year
0                    Toy Story  1995
1                      Jumanji  1995
2             Grumpier Old Men  1995
3            Waiting to Exhale  1995
4  Father of the Bride Part II  1995
票数 1
EN

Stack Overflow用户

发布于 2018-08-16 05:00:13

如果您不需要regex解决方案,

代码语言:javascript
复制
df.title.str.rstrip(')').str.split('(').apply(pd.Series)


    0                           1
0   Toy Story                   1995
1   Jumanji                     1995
2   Grumpier Old Men            1995
3   Waiting to Exhale           1995
4   Father of the Bride Part II 1995
票数 1
EN

Stack Overflow用户

发布于 2018-08-16 04:51:56

您可以简单地创建一个新的数据帧(df_new),它拆分旧数据帧(df)的title列中的字符串,并将其作为列表传递给新的数据帧构造函数:

代码语言:javascript
复制
df_new = pd.DataFrame(df['title'].str.split(r' (?=\()').tolist(), columns=['movie title','year'])

收益率:

代码语言:javascript
复制
                   movie title    year
0                    Toy Story  (1995)
1                      Jumanji  (1995)
2             Grumpier Old Men  (1995)
3            Waiting to Exhale  (1995)
4  Father of the Bride Part II  (1995)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51866182

复制
相关文章

相似问题

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