Ich führe eine mehrdimensionale Suche durch, um einen Wert in einer neuen Spalte zuzuweisen.So wenden Sie eine Funktion auf einen mehrfach codierten Pandas-Datenrahmen an
Ich habe eine Tabelle mit einigen historischen Mitarbeiterdaten nach Monat. In diesem Beispiel gibt es zwei eindeutige Personen, und sie können mehrere Jobs innerhalb eines Monats haben.
Ich möchte eine neue Spalte erstellen, die mir sagt, ob jede eindeutige Person einen geeigneten Job hat, basierend auf den folgenden Bedingungen. Die Herausforderung besteht darin, dass jede Zeile nach Monat/Jahr betrachtet werden muss.
import pandas as pd
import numpy as np
data = {'Month': ["January", "January", "January", "February", "February", "February", "March", "March", "March", "March"],
'Year': [2015,2015,2015,2015,2015,2015,2016,2016,2016,2016],
'Job #': [1,1,2,1,2,1,1,1,2,3],
'Pay Group': ["Excluded","Included","Excluded","Excluded","Included","Included","Excluded","Exclcuded","Excluded","Included"],
'Name': ["John","Bill","Bill","John","John","Bill","John","Bill","Bill","Bill"]}
df = pd.DataFrame(data, columns=['Month', 'Year', 'Job #', 'Pay Group', 'Name'])
df
Eligible Jobs Bedingungen:
- Wenn (
Job #
= 1 UNDPay Group
= Include) und wenn die vorherige Bedingung falsch ist, dann sucht die nächstgrößereJob #
innerhalb der gegebenenmonth/year
UNDPay Group
= Enthält
Dank piRSquared. Das filterte großartig. Es gibt einen anderen Teil dazu ... Ich brauche dies, um eine neue Spalte zu erstellen, die diese als geeignete Jobs kennzeichnet, z. "Geeigneter Job": "Teilnahmeberechtigt"/"Nicht berechtigt". Auch, nachdem dies erledigt ist, wie setze ich die groupby zurück, damit ich zur vollen Tabelle zurückkommen kann? – Christopher
@Christopher Post wurde aktualisiert. – piRSquared
fast da. Es sieht so aus, als ob der Code die ursprünglichen Zeilen für "Berechtigt" überschrieben hat. Ich möchte die ursprüngliche Tabelle beibehalten, habe aber nur die Spalte "Geeigneter Job" = "Teilnahmeberechtigt" oder "Nicht berechtigt". – Christopher