2017-06-17 109 views
0

我有一个数据集,每个贷款都有一行,借款人可以有多个贷款。 'Property'标志显示贷款是否有任何安全性。我试图在借款人层面汇总此标志,因此对于每个借款人,如果其中一个财产标志是'Y',我想为每个借款人添加一个额外的列,其中'Y'为'。熊猫 - 创建聚合结果列

下面的简短示例显示了最终结果应该是什么样子。任何帮助,将不胜感激。

import pandas as pd 

data = {'Borrower': [1,2,2,2,3,3,4,5,6,6], 
     'Loan' : [1,2,3,4,5,6,7,8,9,10], 
     'Property': ["Y","N","Y","Y","N","Y","N","Y","N","N"], 
     'Result': ['Y','Y','Y','Y','Y','Y','N','Y','N','N']} 

df = pd.DataFrame.from_dict(data) 

回答

0

您可以在groupby借款人之后使用属性上的转换。由于'Y'的ASCII代码大于'N',因此如果借款人有任何属性为'Y',max(Property)将给出'Y'。

df['Result2'] = df.groupby('Borrower')['Property'].transform(max) 

df 
Out[202]: 
    Borrower Loan Property Result Result2 
0   1  1  Y  Y  Y 
1   2  2  N  Y  Y 
2   2  3  Y  Y  Y 
3   2  4  Y  Y  Y 
4   3  5  N  Y  Y 
5   3  6  Y  Y  Y 
6   4  7  N  N  N 
7   5  8  Y  Y  Y 
8   6  9  N  N  N 
9   6 10  N  N  N 
+0

非常感谢! – Jelmerd