簡體   English   中英

使用基於列范圍的條件創建 pandas 列

[英]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.

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