簡體   English   中英

Python:根據多個條件從行創建新列

[英]Python: create new columns from rows based on multiple conditions

我一直在四處尋找,無法找到解決這個問題的解決方案:

我正在嘗試從此轉換 dataframe : 在此處輸入圖像描述

對此:

在此處輸入圖像描述

這樣,具有相似remark_code_namesdenial_amounts將根據其對應的har_idreason_code_name提供新列。

我嘗試了一些東西,包括一個 groupby function,它讓我走到了一半。

denials.groupby(['har_id','reason_code_name','denial_amount']).count().reset_index()

但這顯然遺漏了我需要的reason_code_names

在此處輸入圖像描述

這是最低要求:

pd.DataFrame({'har_id':['A','A','A','A','A','A','A','A','A'],'reason_code_name':[16,16,16,16,16,16,16,22,22],
             'remark_code_name':['MA04','N130','N341','N362','N517','N657','N95','MA04','N341'],
             'denial_amount':[5402,8507,5402,8507,8507,8507,8507,5402,5402]})

使用groupby()是 go 的好方法。 將它與transform()一起使用並覆蓋名稱為 'remark_code_name. 此解決方案將所有 remark_code_names 放在同一列中。

denials['remark_code_name'] = denials.groupby(['har_id','reason_code_name','denial_amount'])['remark_code_name'].transform(lambda x : ' '.join(x))

denials.drop_duplicates(inplace=True)

如果您確實需要在自己的列中創建每個代碼,您可以應用另一個 function 並使用.split() 但是,您首先需要根據在單行中找到的最大代碼數來設置列數。

暫無
暫無

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

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