【发布时间】:2019-12-07 22:35:30
【问题描述】:
我创建了以下函数:
def stripnum(str):
array = re.findall(r'\d+', str)
return array[0]
在单行上测试这个函数效果很好。
stripnum(dataset.loc[4,'Description'])
>> 11
现在我想将此函数应用于现有列并创建一个新列:
dataset['Reason'] = dataset['Description'].apply(stripnum)
但不幸的是,我收到了一个错误
list index out of range。
运行dataset.info()我检索到rangeIndex为1366,0到1365的信息。
Description 列有 1366 个元素。所以我很困惑,为什么我会收到这个错误。
我尝试使用以下命令创建一个新的索引列:
dataset['Index'] = range(1,len(dataset)+1)
但问题仍然存在。
有解决这个问题的聪明方法吗?
【问题讨论】:
-
如果您拨打
stripnum('')或stripnum('ABC')会发生什么?问题出在你的函数上。 -
如果您只关心第一场比赛,那么使用
findall()有什么意义? -
另外,还不清楚你的函数到底是做什么的。你能澄清一下吗?
标签: python pandas indexing apply