我正在將資料從資料庫中提取到 Pandas 中,它采用以下格式:
| 操作ID | 程式 | 手術 | 父程式 | 父操作 |
|---|---|---|---|---|
| 65510 | 種子 | 設定 | (空字串) | (空刺) |
| 65511 | 種子 | 伊諾克 | 種子 | 設定 |
| 65512 | 種子 | 文化 | 種子 | 文化 |
有幾千行,一行的父行并不總是前一行(但經常是)。每行代表一個操作。每行都有一個唯一的 ID。每行中的Procedure 和Operation 的組合也應該是唯一的(它們本身都不是唯一的)。ParentProcedure 和 ParentOperation 標識表中的另一行,它是相關行的“父”(這些空字串表示該操作沒有父)。不幸的是,資料庫不包含父操作的 ID,所以我想查找它并將其添加為列。
我正在嘗試添加一個名為 ParentOperationID 的新列,其中每個條目都使用來自 ParentProcedure 和 ParentOperation 的值對程序和操作進行查找,并從第一次命中中找到相應的操作 ID(無論如何應該只是一次命中)。
我可以在 Excel 表格中使用以下內容(必須作為陣列公式輸入,即 Ctrl Shift Enter),但我正在努力在 Pandas 中實作類似的東西:
=INDEX([OperationID],MATCH([@[ParentProcedure]]&[@[ParentOperation]],[Procedure]&[Operation],0))
結果應該是這樣的:
| 操作ID | 程式 | 手術 | 父程式 | 父操作 | 父操作 ID |
|---|---|---|---|---|---|
| 65510 | 種子 | 設定 | (空字串) | (空刺) | NaN |
| 65511 | 種子 | 伊諾克 | 種子 | 設定 | 65110 |
| 65512 | 種子 | 文化 | 種子 | 文化 | 65111 |
沒有父級的操作應該回傳 NaN 或 None 或一些類似的標志,而不是零。如果找不到父物件,則應拋出錯誤。
uj5u.com熱心網友回復:
您可以自行連接資料并選擇所需的列。
df = (df.merge(df,
left_on=['Procedure', 'Operation'],
right_on=['ParentProcedure', 'ParentOperation',
suffixes=['', '_parent'])
.rename(columns={'OperationID_parent': 'ParentOperationID'})
)
這將創建一個名為OperationID_parent. 然后您可以將其重命名為ParentOperationID.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/353844.html
