python
1data = { 2"日":[datetime.datetime(2018,4,20),datetime.datetime(2018,4,22),datetime.datetime(2018,5,26),datetime.datetime(2018,6,6)], 3"売り上げ":[5,6,7,8]} 4df = pd.DataFrame(data) 5 6week=[] 7a = datetime.datetime(2018,4,14) 8b = datetime.datetime(2018,4,20) 9for i in pd.to_datetime(df['日']): 10 i = i.to_pydatetime() 11 if a <= i <= b: 12 a = a.strftime("%Y/%m/%d") 13 b = b.strftime("%Y/%m/%d") 14 week.append(a+"ー"+b) 15 a = datetime.datetime.strptime(a,"%Y/%m/%d") 16 b = datetime.datetime.strptime(b,"%Y/%m/%d") 17 else: 18 a += datetime.timedelta(days=7) 19 b += datetime.timedelta(days=7) 20 21print(week) 22#出力:['2018/04/14ー2018/04/20']
本来実現したい出力は「日」の列の値全てに対応した週を出力することです。
現時点ですと初日の週しか出力できません。
なので繰り返し処理の中でelseを実行したあとにそのままif文の寸前まで戻る処理、または繰り返し処理の中でifの条件にあうまで繰り返す方法などご存知の方はいらっしゃいますでしょうか?
おそらくこのコードですとelse実行後にiに次の数字が代入されてしまうため思う結果になりません。
プログラミングの経験が浅いため、説明がわかりにくいと思いますが教えていただければ幸いです。よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー