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