我遇到了一个名为“电影”的表格的问题。我发现日期和电影标题都在标题栏中。如图所示:
我不知道该如何处理此类问题。因此,我尝试使用此代码以使其类似于MySQL代码,但我还是没有工作。
DataFrame(row.str.split(' ',-1).tolist(),columns = ['title','date'])
如何将其分为两列(标题,日期)?
答案 0 :(得分:3)
如果您使用的是MySQL 8+,那么我们可以尝试使用import pandas as pd
import seaborn as sns
DF1 = pd.DataFrame({'index': ['A', 'B', 'C'], 'Number': [110, 22, 52]})
DF2 = pd.DataFrame({'index': ['A', 'B', 'C'], 'Number': [100, 22, 52]})
DF3 = pd.DataFrame({'index': ['A', 'B', 'C'], 'Number': [90, 12, 10]})
DF = pd.concat([DF1, DF2, DF3])
DF['df_num'] = ['1','1','1','2','2','2','3','3','3']
sns.barplot(data = DF, x='index', y='Number', hue='df_num')
:
REGEXP_REPLACE
这是一个常规的正则表达式模式,可以匹配您的标题字符串:
SELECT
REGEXP_REPLACE(title, '^(.*)\\s\\(.*$', '$1') AS title,
REGEXP_REPLACE(title, '^.*\\s\\((\\d+)\\)$', '$1') AS date
FROM yourTable;
说明:
^.*\s\((\d+)\)$
答案 1 :(得分:1)
我会简单地做:
select left(title, length(title) - 7) as title,
replace(right(title, 5) ,')', '') as year
对于这种逻辑,正则表达式似乎有些过分。
在Hive中,您需要为此使用substr()
:
select substr(title, 1, length(title) - 7) as title,
substr(title, length(title) - 5, 4) as year
答案 2 :(得分:0)
经过努力和搜索,我能够构建出完美运行的命令。
select
translate(substr(title,0,length(title) -6) ,'', '') as title,
translate(substr(title, -5) ,')', '') as date
from movies;
也感谢那些回答的人!