有时候在迭代Dataframe的时候会出来一个TypeError,感觉真的是莫名奇妙。比如针对下面这个数据,想把duration里面的字符’s‘去掉,运用下面的代码就报错了。
tempData
Out[12]:
duration likes
0 2.3 89
1 3s 67
tempData.duration = tempData.duration.apply(lambda x:x.replace('s','')*10 if 's' in x else x)
TypeError: argument of type 'float' is not iterable
刚开始以为是dataframe里面的数据类型的原因,因为此时duration的dtype不是object,用下面的代码修改了数据类型结果还是报错。
data.duration = data.duration.astype('object')
后面其实也还是数据类型的原因,只是不是上面那个原因。出现这个问题的原因是 in ,我在代码里面用in判断了‘s'是否在字段里面,但是没有字符’s'的字段数据类型是float不能迭代,in只能用于可以迭代的类型。所以就导致了上面的错误。这种细微的错误也是很糟心啊!
【题外话】
我们从小就开始学英语,但是口语一直落后于我们的听力和阅读。今天给大家推荐一个实用口语课程,由外教中英双语授课,可以帮助我们摆脱中式口语的思维,又不用担心听不懂课程内容。因为是线上课程,可以永久的回看。