【发布时间】:2016-08-20 20:25:35
【问题描述】:
我创建了以下函数,该函数获取成员的登录日期和合同期限,并返回一个修改后的数据框,其中包含每个成员的到期日期。该函数按预期工作,但我想知道是否有更简洁的方法来编写嵌套函数month_to_num(ind)。我知道python没有实现cases,但是有没有办法重写所有if/elif/else语句?
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块。