簡體   English   中英

如何根據另一列中的值在一列中填充 NaN?

[英]How to fill NaN in a column based on the values in another column?

我正在處理這個項目,我需要從reason列中填寫一個NaN單元格,但我需要先與status列進行交叉檢查並填寫適當的值。

條件是:

  • 如果STATUS為“Invoiced”且REASONNaN ,則填寫“Not Applicable”
  • 如果STATUS是“Lost Sale”並且REASONNaN ,則填寫“Unknown”

我試過這段代碼:

data2 = np.where((data["SO_STATUS"] == "Invoiced")&(data["SO_LOSREASON"]=='NaN'),'null',"Not Applicable")
data2 = pd.DataFrame(data2, columns = ['SO_STATUS'])
data= data.join(data2)

但是,它說:

ValueError: columns overlap but no suffix specified: Index(['SO_STATUS'], dtype='object')

我不確定我所做的是否正確,因為我仍然需要reason列中不是NaN的其他數據。 非常感謝您的幫助!

嘗試使用直接列分配:

data['SO_STATUS'] = np.where((data["SO_STATUS"] == "Invoiced") & data["SO_LOSREASON"].isna(),, "Not Applicable", "Unknown")

您可以使用mapwhere ,因此很容易添加任何其他條件:

data['new_column'] = (data['SO_STATUS'].map({'Invoiced': 'Not Applicable',
                                             'Lost Sale': 'Unknown',
                                             # add other here: 'Other': 'other',
                                            })
                                       .where(data['SO_LOSREASON'].isna())
                      )

示例(為清楚起見設置新列new_column ):

   SO_STATUS SO_LOSREASON      new_column
0   Invoiced          NaN  Not Applicable
1  Lost Sale          NaN         Unknown
2      Other          NaN             NaN
3   Invoiced          abc             NaN

暫無
暫無

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

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