在下面的例子中,我有电影的数据:
我想将标题列值拆分为2个新列,即其中一个新列(“电影标题”)将采用=玩具故事作为行值,另一个新列(“年份”)将采用= 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)
使用正则表达式
:
df[['movie_title', 'year']] = df.title.str.extract('(.*)\s\((\d+)', expand=True)
df = pd.DataFrame({'title':
['Toy Story (1995)', 'Jumanji (1995)', 'Grumpier Old Men (1995)',
'Waiting to Exhale (1995)', 'Father of the Bride Part II (1995)',
'Hello (Goodbye) (1995)'
]})
df[['movie_title', 'year']] = df.title.str.extract('(.*)\s\((\d+)', expand=True)
输出:
title movie_title year
0 Toy Story (1995) Toy Story 1995
1 Jumanji (1995) Jumanji 1995
2 Grumpier Old Men (1995) Grumpier Old Men 1995
3 Waiting to Exhale (1995) Waiting to Exhale 1995
4 Father of the Bride Part II (1995) Father of the Bride Part II 1995
5 Hello (Goodbye) (1995) Hello (Goodbye) 1995
我们使用的正则表达式是:<code>(.*)\(\d)</code>。
表达式的第一部分是:(.*)
。括号表示它是一个捕获组,括号内的内容表示我们要捕获的内容。在本例中为<code>*表示我们贪婪地想要捕获一切。在捕获组之后,我们有\s\(
,它字面上被解释为一个空格,后面是一个开括号,所以'(“
因为在此之前的捕获组是贪婪的,如果有多个匹配,我们将捕获所有内容,直到最后一个(“
)。(例如,查看它如何正确捕获你好(再见)(1995)
。
最后,我们添加了第二个捕获组,\d
作为我们要捕获的内容,它捕获标题中最后一个'(“
)之后的所有数字,对我们来说,这将是4位数的年份。
如果您不想要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
尝试将str访问器与<code>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
我正在处理一个大的csv文件,下一列的最后一列有一个文本字符串,我想用一个特定的分隔符来分割。我想知道是否有一种简单的方法可以使用pandas或python来实现这一点? 我想按空格分割,然后按列中的冒号分割,但是每个单元格将导致不同数量的列。我有一个重新排列列的函数,所以列在工作表的末尾,但是我不确定从那里做什么。我可以在excel中使用内置的函数和一个快速宏来完成,但是我的数据集有太多的记录需
我有一个熊猫的数据框,有一列是向量: 我想把它拆分成这样的元素: df2=pd.DataFrame({'ID':[1,2],'A':[1,4],'B':[2,5],'C':[3,6]}) 我试过但是没有运气.任何帮助将不胜感激。
我正在将SQL查询的结果写入Excel工作表,并尝试将行转换为列,但似乎无法让Pandas移动;Excel似乎存在某种难题。我看过: 如何在数据帧中切换列和行 在groupby之后,如何将dataframe中的行值转换为Python中的列标签? 在Python中将列转换为行 Python:将行转换为列标题 似乎都不起作用。 Excel表格: 请求:
问题内容: 假设我有一个数据框如下 现在,我希望a和b列不同的行。所以预期的输出是 我怎样才能做到这一点? 问题答案: 我喜欢可读性,请使用: 输出:
我有一个数据帧: 如何拆分该列,使每个值都在自己的列中? 我找到的唯一答案是关于将一列拆分成两列。如何将一列拆分成两列?
我想对两个不同的数据帧执行一些sql操作。不幸的是,就像我处理的数据一样,拼写通常是不同的。 下面是一个示例,其中userid属于df1,username属于df2。有人帮我吗?