簡體   English   中英

在條件熊貓的新列中分配值

[英]Assign values in new column on condition pandas

我有一個數據框:

id    name    value
 1    asd      0.5
 2    fgg      0.8
 3    hfd      1.5
 4    erw      0.5

我必須創建一個新的列accept ,如果值大於1.0,則將outlier設為1,否則設為0。

id    name    value   accept
 1    asd      0.5      0
 2    fgg      0.8      0
 3    hfd      1.5      1
 4    erw      0.5      0

我可以使用iterrows並使用.loc。

for index,row in df.iterrows():
    if row['value']>1:
        df.loc[df.index==row.index,'accept'] = 1
    else:
        df.loc[df.index==row.index,'accept'] = 0

有沒有更簡單的方法可以做到這一點而無需迭代?

將條件強制轉換為int - True轉換為1False轉換為0

df['accept'] = (df['value'] > 1).astype(int)
print (df)
   id name  value  accept
0   1  asd    0.5       0
1   2  fgg    0.8       0
2   3  hfd    1.5       1
3   4  erw    0.5       0

對於另一個值,請使用numpy.where

df['accept'] = np.where(df['value'] > 1, 'high', 'low')
print (df)
   id name  value accept
0   1  asd    0.5    low
1   2  fgg    0.8    low
2   3  hfd    1.5   high
3   4  erw    0.5    low

只要您的值介於0到2之間,請使用np.floor + astype(int)

df['accept'] = np.floor(df.value).astype(int)
df

   id name  value  accept
0   1  asd    0.5       0
1   2  fgg    0.8       0
2   3  hfd    1.5       1
3   4  erw    0.5       0

暫無
暫無

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

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