2017-06-17 4 views
0

Ich habe einen Datensatz, der eine Zeile für jeden Kredit hat, und ein Kreditnehmer kann mehrere Kredite haben. Die Eigenschaft "Property" zeigt an, ob hinter dem Kredit eine Sicherheit steht. Ich versuche, diese Flagge auf einer Kreditnehmer-Ebene zu aggregieren, so dass für jeden Kreditnehmer, wenn eine der Eigenschaftsflags "Y" ist, ich eine zusätzliche Spalte hinzufügen möchte, wo es für jeden der Kreditnehmer "Y" ist.Pandas - Spalte mit Aggregatergebnissen erstellen

Das kurze Beispiel unten zeigt, wie das Endergebnis aussehen soll. Jede Hilfe wäre willkommen.

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) 

Antwort

0

Sie können Transform on Eigenschaft nach groupby Borrower verwenden. Da der ASCII-Code von 'Y' größer als 'N' ist, gibt es bei einer Eigenschaft, die für einen Kreditnehmer 'Y' ist, max (Eigenschaft) '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

Vielen Dank! – Jelmerd

Verwandte Themen