在下面的例子中,我有电影的数据:
我想将标题列值拆分为两个新列,即其中一个新列(“电影标题")将以=玩具故事作为行值,另一个新列(”年“)将以=1995作为行值。
如何对整个数据帧进行此操作?
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)
发布于 2018-08-16 04:55:22
尝试将字符串访问器与split
一起使用,使用查找空格和左括号或右括号的正则表达式:
df.title.str.split('\s\(|\)',expand=True)
.drop(2, axis=1)
.set_axis(['movies','year'], inplace=False, axis=1)
输出:
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
发布于 2018-08-16 05:00:13
如果您不需要regex
解决方案,
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
发布于 2018-08-16 04:51:56
您可以简单地创建一个新的数据帧(df_new
),它拆分旧数据帧(df
)的title
列中的字符串,并将其作为列表传递给新的数据帧构造函数:
df_new = pd.DataFrame(df['title'].str.split(r' (?=\()').tolist(), columns=['movie title','year'])
收益率:
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)
https://stackoverflow.com/questions/51866182
复制相似问题