pandasのカラムの中にdatetime型があるとして、1時間先のデータを新しいカラムとして格納したいです。
下記データフレームに「value_1h」というカラムを作成し、valueの1時間先に相当するデータを格納していきたいです。
python
1df1 = pd.DataFrame({ 2 '地名':['東京','東京','東京','東京','東京','大阪','大阪','大阪','大阪','大阪'], 3 '時刻':['2018-08-22 00:00:00', 4 '2018-08-22 01:00:00', 5 '2018-08-22 02:00:00', 6 '2018-08-22 03:00:00', 7 '2018-08-22 04:00:00', 8 '2018-08-22 00:00:00', 9 '2018-08-22 01:00:00', 10 '2018-08-22 02:00:00', 11 '2018-08-22 03:00:00', 12 '2018-08-22 04:00:00'], 13 'value':[10,6,4,10,8,3,7,5,6,4]}) 14df1['時刻'] = pd.to_datetime(df1['時刻']) 15df1 16 17-------------- 18 地名 時刻 value 190 東京 2018-08-22 00:00:00 10 201 東京 2018-08-22 01:00:00 6 212 東京 2018-08-22 02:00:00 4 223 東京 2018-08-22 03:00:00 10 234 東京 2018-08-22 04:00:00 8 245 大阪 2018-08-22 00:00:00 3 256 大阪 2018-08-22 01:00:00 7 267 大阪 2018-08-22 02:00:00 5 278 大阪 2018-08-22 03:00:00 6 289 大阪 2018-08-22 04:00:00 4 29-------------- 30
python
1for x,y in zip(df1['地名'],df1['時刻']): 2 if (y + datetime.timedelta(hours=1)) == datetime.datetime(2018, 8, 22, 5, 0): 3 continue 4 else: 5 df1['value_1h'][(df1['地名']== x)&(df1['時刻']== y)] = df1['value'][(df1['地名']== x)&(df1['時刻']==(y + datetime.timedelta(hours=1)))] 6 7df1 8 9期待していた内容: 10-------------- 11 地名 時刻 value value_1h 120 東京 2018-08-22 00:00:00 10 6 131 東京 2018-08-22 01:00:00 6 4 142 東京 2018-08-22 02:00:00 4 10 153 東京 2018-08-22 03:00:00 10 8 164 東京 2018-08-22 04:00:00 8 175 大阪 2018-08-22 00:00:00 3 7 186 大阪 2018-08-22 01:00:00 7 5 197 大阪 2018-08-22 02:00:00 5 6 208 大阪 2018-08-22 03:00:00 6 4 219 大阪 2018-08-22 04:00:00 4 22-------------- 23 24実際の結果: 25-------------- 26 地名 時刻 value value_1h 270 東京 2018-08-22 00:00:00 10 NaN 281 東京 2018-08-22 01:00:00 6 NaN 292 東京 2018-08-22 02:00:00 4 NaN 303 東京 2018-08-22 03:00:00 10 NaN 314 東京 2018-08-22 04:00:00 8 325 大阪 2018-08-22 00:00:00 3 NaN 336 大阪 2018-08-22 01:00:00 7 NaN 347 大阪 2018-08-22 02:00:00 5 NaN 358 大阪 2018-08-22 03:00:00 6 NaN 369 大阪 2018-08-22 04:00:00 4 37-------------- 38
なぜ、value_1hがNaNになるのかが分かりません。
期待する内容になるにはどのようにすればよろしいでしょうか。
##動作環境
Windows10 Anaconda Python3.6
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/02 02:05