私は以下のようなデータフレームを持っています:
Date Quantity
2019-04-25 100
2019-04-26 148
2019-04-27 124
必要な出力は、次の2つの日付間の数量の差を取得し、24時間の平均を取り、23列を作成し、次のように前の列に1時間ごとの数量の差を追加することです。
Date Quantity Hour-1 Hour-2 ....Hour-23
2019-04-25 100 102 104 .... 146
2019-04-26 148 147 146 .... 123
2019-04-27 124
ループを繰り返し処理しようとしていますが、機能していません。コードは次のとおりです。
for i in df.index:
diff=(df.get_value(i+1,'Quantity')-df.get_value(i,'Quantity'))/24
for j in range(24):
df[i,[1+j]]=df.[i,[j]]*(1+diff)
私はいくつかの調査を行いましたが、上記のような列を繰り返し作成する方法が見つかりませんでした。あなたが私を助けてくれることを願っています。前もって感謝します。
とを使用resample
したIIUC interpolate
、次にpivot
出力
s=df.set_index('Date').resample('1 H').interpolate()
s=pd.pivot_table(s,index=s.index.date,columns=s.groupby(s.index.date).cumcount(),values=s,aggfunc='mean')
s.columns=s.columns.droplevel(0)
s
Out[93]:
0 1 2 3 ... 20 21 22 23
2019-04-25 100.0 102.0 104.0 106.0 ... 140.0 142.0 144.0 146.0
2019-04-26 148.0 147.0 146.0 145.0 ... 128.0 127.0 126.0 125.0
2019-04-27 124.0 NaN NaN NaN ... NaN NaN NaN NaN
[3 rows x 24 columns]
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加