2017-10-30 2 views
2

Ich habe zwei Datenrahmen. Snippets sind untenFunktion bei der Zusammenführung anwenden

Mitarbeiter

enter image description here

Projekt

enter image description here

klebte Sowohl die Datenrahmen haben gemeinsame Spalten "Ebene" und "Fähigkeit", auf dem ich brauche die „EmployeeID fusionieren "Spalte des Mitarbeiterdatenrahmens zum Projektdatenrahmen. Aber das Problem ist, dass ich diese EmployeeID zum Projekt hinzufügen muss, dessen CostToCompany die niedrigste ist. Wie kann ich das machen?

enter image description here

Antwort

2

können Sie, drop_duplicates wählen die min eintauschen

Employee=Employee.sort_values(['Level','skill','CostToCompany']).drop_duplicates(['Level','skill','Rating'],keep='first') 

Dann

Project1=pd.merge(Project,Employee['Level','skill','Employee ID'].on='cols') 

Oder Sie können Ihr Ergebnis zu tun mit:

Project1.sort_values(['Level','skill','CostToCompany']).drop_duplicates(['Level','skill','Rating'],keep='first') 
+1

Mein Proje ct Datenrahmen hat 10 Zeilen. Also sollte ich beim Zusammenführen 10 Zeilen haben, aber ich bekomme 20 Zeilen. Auch der gleiche Satz von Skill- und Level-Sets wiederholt sich mit der EmployeeID – Biswa

+0

'Project1 = pd.merge (Projekt, Mitarbeiter ['Level', 'skill', 'Rating']. On = 'cols', wie = 'left') ', stelle sicher, dass du duplicated als das, was ich tue in der ersten Zeile – Wen

+1

Ich denke, ich sollte 'Rating' auf drop_duplicates nicht verwenden. Dann gibt es mir 10 Zeilen – Biswa

Verwandte Themen