簡體   English   中英

根據條件為pandas df列分配三個值

[英]assign three values based on condition to pandas df column

我有一個熊貓df,其中包含一列正負負數。 我想創建另一列,如果no> 0則為1,如果no <0則為-1,如果數字為0則為0。

我正在嘗試為每一行使用for循環來執行此操作,但是它花費的時間太長。 我想知道是否有更快的方法。 我還想知道是否可以將相同的邏輯擴展到正負timedelta對象。
謝謝。

我的最終df應該如下所示:

df = pd.DataFrame({'a':[1, 2, -1, 0, -2], 'b':[1, 1, -1, 0, -1]})

     a   b
0    1   1
1    2   1
2   -1  -1
3    0   0
4   -2  -1

其中b是根據a的值分配的col

這是numpy sign一種方法

np.sign(df.a)
Out[118]: 
0    1
1    1
2   -1
3    0
4   -1
Name: a, dtype: int64
df['b'] = np.sign(df.a)

嘗試使用np.where並提供條件

import numpy as np

df['b']= np.where(df['a']>0,1,
         np.where(df['a']<0,-1,0))
     a   b
0    1   1
1    2   1
2   -1  -1
3    0   0
4   -2  -1

@rafaelc解決方案

m1= df['a'] >0
m2= df['a'] <0


df['b'] = np.select([m1, m2],
                    [ 1, -1], 
                    default=0)

暫無
暫無

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

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