熊猫 - 创建聚合结果列
问题描述:
我有一个数据集,每个贷款都有一行,借款人可以有多个贷款。 '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)
答
您可以在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
非常感谢! – Jelmerd