[英]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
轉換為1
, False
轉換為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.