我有以下函數,它取得了成員的登錄日期和合約長度,併爲每個成員返回一個帶有到期日期的修改後的數據框。該函數按預期工作,但我想知道是否有更清晰的方式來編寫嵌套函數month_to_num(ind)
。我知道python不實現cases
,但有沒有辦法重寫所有的if/elif/else
陳述?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
您通常可以使用python字典來替換'case'語句或大的if/elif'塊。 –