Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从列中提取数字信息并将其插入新列中_Python_Regex_Pandas - Fatal编程技术网

Python 从列中提取数字信息并将其插入新列中

Python 从列中提取数字信息并将其插入新列中,python,regex,pandas,Python,Regex,Pandas,我有一个这样的专栏:专辑:月亮的黑暗面1973有专辑的名字,在结尾,括号之间是年份 我只需要删除该专栏的最后一部分,并创建一个名为“仅包含年份的年份”的新专栏 我不确定是否使用re.search,但我尝试了以下方法: data['year'] = data['Album'].str.extract(r'\(\d*\)') 如果我在单个字符串上使用re.search对其进行测试,并且它在正则表达式的在线工具中工作,那么这个模式就可以工作 那我该怎么办 谢谢 您仍然可以使用您的搜索 data['y

我有一个这样的专栏:专辑:月亮的黑暗面1973有专辑的名字,在结尾,括号之间是年份

我只需要删除该专栏的最后一部分,并创建一个名为“仅包含年份的年份”的新专栏

我不确定是否使用re.search,但我尝试了以下方法:

data['year'] = data['Album'].str.extract(r'\(\d*\)')
如果我在单个字符串上使用re.search对其进行测试,并且它在正则表达式的在线工具中工作,那么这个模式就可以工作

那我该怎么办


谢谢

您仍然可以使用您的搜索

data['year']=data['Album'].map(lambda x : re.search(r'\(\d*\)',x).group(0))

您可以尝试使用拆分:

data["year"] = data['Album'].apply(lambda x: int(x.split("(")[1][0:-1]))

这将分隔相册的年份和名称,并将其从额外字符中删除:

import pandas as pd

data = pd.DataFrame({"album": ['"The Dark Side Of The Moon" (1973)']})

names = []
years = []
for i in range(len(data['album'])):
  year = data['album'][i].split()[-1]
  years.append(int(year.strip("()")))
  names.append(data['album'][i].replace(year,'').strip('" '))

data = pd.DataFrame(names,years)

你需要用一组额外的parenthsis\d*\来解决这个棘手的问题。你应该把答案标记为正确的。我建议你: