Ich habe die folgende Funktion, die ich gemacht habe, die Anmeldedatum eines Mitglieds und die Länge ihres Vertrags dauert und gibt einen geänderten Datenrahmen mit einem Ablaufdatum für jedes Mitglied zurück. Die Funktion funktioniert wie vorgesehen, aber ich wollte wissen, ob es eine sauberere Möglichkeit gibt, die verschachtelte Funktion month_to_num(ind)
zu schreiben. Ich weiß, Python implementiert cases
nicht, aber gibt es eine Möglichkeit, die alle if/elif/else
Aussagen umschreiben?Switch-Fall wie Struktur in Python
def renewal_date(df):
def month_to_num(ind):
if (df.loc[ind, "Contract Type"] == "1 Month"):
return 1
elif (df.loc[ind, "Contract Type"] == "3 Months Prom" or
df.loc[ind, "Contract Type"] == "3 Month"):
return 3
elif (df.loc[ind, "Contract Type"] == "4 Month Promo"):
return 4
elif (df.loc[ind, "Contract Type"] == "6 Months"):
return 6
else:
return 12
for z in range(0, len(df)):
exp_date = (df.loc[z, "Date-Joined"] +
relativedelta(months=+month_to_num(z)))
df.set_value(z,"Date-Renewal", exp_date)
return df
Sie können Python-Wörterbücher normalerweise verwenden, um 'case' Anweisungen oder große' if/elif' Blöcke zu ersetzen. –