我在数据框中有一个列应该是所有数字字符,但在某些情况下混合了一些字母字符。我试图使用列表解析来摆脱非数字字符,以便我有一个列表,然后我可以转换为系列并写入旧值。
我的具体问题是结果列表只是理解中使用的原始数据帧列长度的一半左右。为什么会这样?
if df.CEEB.dtype=='object':
CEEBcomp = {re.sub("[^0-9]","",str(x)) for x in list(df.CEEB)}
答案 0 :(得分:8)
您没有创建列表。您创建了一个集,它只能包含唯一元素。你必须有很少的重复,结果是一半的长度。
列表理解将使用方括号:
b
您无需在a
上使用CEEBcomp = [re.sub("[^0-9]", "", str(x)) for x in df.CEEB]
;它必须是list()
的可迭代工作,并且只需要一个可迭代的理解,集合或列表或其他。