Pandas - 使用聚合结果创建列

时间:2017-06-17 08:36:09

标签: python-3.x pandas

我有一个数据集,每个贷款都有一行,借款人可以有多笔贷款。 “财产”标志显示贷款背后是否有任何安全措施。我试图在借款人级别汇总这个标志,所以对于每个借款人,如果其中一个属性标志是'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) 

1 个答案:

答案 0 :(得分:0)

您可以在group by Borrower之后使用房地产转换。因为'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