簡體   English   中英

lambda function 列在 dataframe 列錯誤

[英]lambda function on list in dataframe column error

I have a list of numbers inside of a pandas dataframe and i am trying to use a lambda function + list comprehension to remove values from these lists.

第 1 列第 2 列

一個 [-1, 2, 10, 600, -10]

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

c.....

等等

df.col2.apply(lambda x: [i for i in x if i>= 0]) #just trying to remove negative values 

數字總是遞增的,可以全為負數、全為正數或混合。 列表大約有 200 個項目,都是整數。

我收到此錯誤:

TypeError: 'numpy.float64' object is not iterable

編輯:當我這樣做時,它可以工作[i for i in df[col2][#] if i >= 0]我想我可以通過 for 循環運行它.. 雖然看起來很慢

Edit2:用新鮮的眼光看它。 事實證明,該列並不完全由列表組成,有一些浮點值分布在各處(duh)。 一旦我糾正了上面的代碼按預期工作,合並發生了一些奇怪的事情。 謝謝您的幫助!

因為你的 lambda 中的x是一個浮點數,你不能循環浮點數:p。 如果你需要這樣做。 你可以

In [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
Out[2]: 
   col2
0   2.0
1   0.0
2  -4.0
3   3.0
4   2.0
5   3.0
6  -3.0

In [3]: df.col2.apply(lambda x: x if x > 0 else None).dropna()
Out[3]: 
0    2.0
3    3.0
4    2.0
5    3.0
Name: col2, dtype: float64

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM