[英]iterate through columns pandas dataframe and create another column based on a condition
[英]Create pandas column with a condition based on a range of columns
我想添加一個新列,如果 5 列的范圍都具有相同的值,它將具有該值。 否則,它將出現“錯誤”。
由此:
|1 1 1 1 1|
|2 2 2 2 2|
|0 1 2 2 1|
|z z z z z|
對此:
|1 1 1 1 1| 1
|2 2 2 2 2| 2
|0 1 2 2 1| Error
|z z z z z| z
有沒有辦法在不遍歷每一行的情況下做到這一點?
使用 # numpy.where
並通過DataFrame.nunique
測試相同的值:
df['new'] = np.where(df.nunique(axis=1).eq(1), df.iloc[:, 0], 'error')
或者如果所有列的值相同,則為了更好的性能測試第一列:
df['new'] = np.where(df.eq(df.iloc[:, 0], axis=0).all(1), df.iloc[:, 0], 'error')
print (df)
0 1 2 3 4 new
0 1 1 1 1 1 1
1 2 2 2 2 2 2
2 0 1 2 2 1 error
3 z z z z z z
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.