[英]Python: create new columns from rows based on multiple conditions
我一直在四處尋找,無法找到解決這個問題的解決方案:
對此:
這樣,具有相似remark_code_names
的denial_amounts
將根據其對應的har_id
和reason_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.