Python列表理解返回比它开始的更短的列表

use*_*956 0 python list-comprehension

我在数据框中有一个列应该是所有数字字符,但在某些情况下,有一些字母字符混合在一起.我试图使用列表解析来摆脱非数字字符,以便我有一个列表,然后我可以转换为系列并写入旧值.

我的具体问题是结果列表只是理解中使用的原始数据帧列长度的一半左右.为什么会这样?

if df.CEEB.dtype=='object':
    CEEBcomp = {re.sub("[^0-9]","",str(x)) for x in list(df.CEEB)}
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 8

您没有创建列表.您创建了一个,这只能承载独特的元素.你必须有很少的重复,结果是一半的长度.

列表理解将使用方括号:

CEEBcomp = [re.sub("[^0-9]", "", str(x)) for x in df.CEEB]
Run Code Online (Sandbox Code Playgroud)

你并不需要使用list()df.CEEB; 它必须是一个可迭代的list()工作,并且迭代就是理解,集合或列表或其他所需的全部.