我有一个带列的数据框
test
它包含测试名称,我用它来提取关于A级考试的一些信息。因为我知道用于测试名称的字符串中的分数总是在我使用这行代码提取数据的日期之后的下一个数字:
df['Grade'] = df['test'].apply(lambda x: str(list(filter(str.isdigit, x[10:]))[0]))
然而,这一行给出了
TypeError: 'float' object is not subscriptable
. 现在,我应该注意在我运行这个之前,我做了一个检查
df.dtypes
以及专栏
测试
被列为
object
. 这是有道理的,因为测试名称的字符串类似于
2015-2016_math_grade_7
,所以不可能被大熊猫视为漂浮物。
我已经检查过了,测试名称是该列中的唯一数据,所以我不知道为什么会出现这种类型错误。无论将代码更改为什么,都会出现此错误,因为在
x[:10]
. (我用过
df['Grade'] = df['test'].apply(lambda x: str(re.sub("\D", "", str(x[:10]))))
)
我还应该注意到,我以前使用过这段代码,它运行得很好,但是由于某些原因,在这个数据集上,如果这有帮助的话,它似乎会失败。