Python dataframe列中列表上的lambda函数错误

Python dataframe列中列表上的lambda函数错误,python,pandas,numpy,lambda,Python,Pandas,Numpy,Lambda,我在pandas数据框中有一个数字列表,我试图使用lambda函数+列表理解来从这些列表中删除值 第1列第2列 a[-1,2,10600,-10] b[-0,-5,-6,-200,-30] c 等等 数字总是递增的,可以全部为负、全部为正或混合。列表大约有200个项目,全部为整数 我得到这个错误: TypeError: 'numpy.float64' object is not iterable 编辑:当我这样做的时候,它是有效的 [i for i in df[col2][#]如果i>=0]我

我在pandas数据框中有一个数字列表,我试图使用lambda函数+列表理解来从这些列表中删除值

第1列第2列

a[-1,2,10600,-10]

b[-0,-5,-6,-200,-30]

c

等等

数字总是递增的,可以全部为负、全部为正或混合。列表大约有200个项目,全部为整数

我得到这个错误:

TypeError: 'numpy.float64' object is not iterable
编辑:当我这样做的时候,它是有效的
[i for i in df[col2][#]如果i>=0]
我想我可以通过for循环来运行它。。但似乎很慢


编辑2:用新鲜的眼光看它。事实证明,该列并非完全由列表组成,而是有一些浮点值分布在各处(duh)。合并过程中发生了一些奇怪的事情,我纠正了上面的代码是否按预期工作。谢谢你的帮助

因为lambda中的
x
是一个浮点数,不能在float:p上循环。 如果你需要的话。你可以

[2]中的
:np.random.seed(4)
…:df=pd.DataFrame(np.random.randint(-5,5,7)).rename(columns={0:“col2”})
…:df.col2=df.col2.astype(float)
…:df
出[2]:
可乐
0   2.0
1   0.0
2  -4.0
3   3.0
4   2.0
5   3.0
6  -3.0
在[3]中:df.col2.apply(如果x>0,则lambda x:x,否则无)
出[3]:
0    2.0
3    3.0
4    2.0
5    3.0
名称:col2,数据类型:float64

错误说明了您的问题所在。尝试将
lambda
设置为变量,将列转换为列表,然后将其传递给用户。我对该错误没有任何意义。lambda x是一个列表,为什么会出现类型错误?如果我这样做:``[i for i in df[col2][#]if i>=0]``这是第2列中的每一项都是一个数字列表,或者有没有任何实例是一个单浮点数而不是一个列表?我想你没有注意到如何将工作视图应用到掩码和条件中,而不仅仅是
df.col2[df.col2>=0]
?因为
df.col2[df.col2>=0]
return only>=0值,因此您无法将结果列附加到现有df,另一方面
df.col2.apply(lambda x:x,如果x>0,则无)
返回相同的长度,以便您可以将其附加到现有df。而不是在您删除后。。。
TypeError: 'numpy.float64' object is not iterable