私は以下のメンバーのサインイン日付と契約の長さを取り、各メンバーの有効期限付きの変更されたデータフレームを返すという機能を持っています。この関数は意図したとおりに機能しますが、入れ子関数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
通常は、 'case'文や大きな' if/elif'ブロックを置き換えるためにPython辞書を使用することができます。 –