現在、毎月のif条件に基づいてforループを使用して、その数値に相当する月に月を割り当てます。それは実行時にはかなり効率的だと思われますが、私の好みにはあまりにも手作業で醜いです。Python/Pandasで月数を数値に換算するにはどうすればいいですか?
これはどのようにしてよりうまく実行できますか?何とかして複数のif条件を単純化/凝縮することによって、また日付変換のために作られたある種のトランスレータを使用することで、それを改善することは可能でしょうか?どちらがお勧めですか?
#make numeric month
combined = combined.sort_values('month')
combined.index = range(len(combined))
combined['month_numeric'] = None
for i in combined['month'].unique():
first = combined['month'].searchsorted(i, side='left')
last = combined['month'].searchsorted(i, side='right')
first_num = list(first)[0] #gives first instance
last_num = list(last)[0] #gives last instance
if i == 'January':
combined['month_numeric'][first_num:last_num] = "01"
elif i == 'February':
combined['month_numeric'][first_num:last_num] = "02"
elif i == 'March':
combined['month_numeric'][first_num:last_num] = "03"
elif i == 'April':
combined['month_numeric'][first_num:last_num] = "04"
elif i == 'May':
combined['month_numeric'][first_num:last_num] = "05"
elif i == 'June':
combined['month_numeric'][first_num:last_num] = "06"
elif i == 'July':
combined['month_numeric'][first_num:last_num] = "07"
elif i == 'August':
combined['month_numeric'][first_num:last_num] = "08"
elif i == 'September':
combined['month_numeric'][first_num:last_num] = "09"
elif i == 'October':
combined['month_numeric'][first_num:last_num] = "10"
elif i == 'November':
combined['month_numeric'][first_num:last_num] = "11"
elif i == 'December':
combined['month_numeric'][first_num:last_num] = "12"
これらのいずれもがソートされたデータを活用しているので、彼らは私が書いたものも遅いのオプションがありますか? – user1318135
ソートは必要ないと思います。 – jezrael
大きな混乱したデータセットでは、私のコード、またはこれらのソリューションのうちの1つが最も速くなるでしょうか?あるいは、違いが無視できると信じる理由はありますか? – user1318135