0
を使用して、比例毎日のデータに開始&終了データにより接着データをタグ付けされた私は、製品ごとに使用できないデータを使用している例を示します。グループは時給パンダDF
import pandas as pd
import datetime as dt
unavability = pd.DataFrame([[dt.datetime(2017, 10, 19,11), dt.datetime(2017, 10, 19,12),'broom'],
[dt.datetime(2017, 10, 19,9),dt.datetime(2017, 10, 19,10),'broom'],
[dt.datetime(2017, 10, 19,1), dt.datetime(2017, 10, 19,2),'bike'],
[dt.datetime(2017, 10, 19,22),dt.datetime(2017, 10, 20,3),'bike']],
columns=['start_date', 'end_date','product'])
print unavability
start_date end_date product
0 2017-10-19 11:00:00 2017-10-19 12:00:00 broom
1 2017-10-19 09:00:00 2017-10-19 10:00:00 broom
2 2017-10-19 01:00:00 2017-10-19 02:00:00 bike
3 2017-10-19 22:00:00 2017-10-20 03:00:00 bike
は、私は、各日付&製品ごとに使用できない割合にグループにデータを探していますので、私は使用できない期間が続く場合でも、私はそれが仕事をしたいという心に留めておく、下記に上記Data Frame
を変換したいです49時間以上(3日オーバーラップ)
desired=pd.DataFrame([[dt.datetime(2017, 10, 19),'broom',22/24.0],#2 houres of unavalability
[dt.datetime(2017, 10, 20),'broom',24/24.0], #Product fully available at that day
[dt.datetime(2017, 10, 19),'bike',22/24.0], # 2 hour of unavalability - from 22 to 24
[dt.datetime(2017, 10, 20),'bike',21/24.0]], # 3 hour of unavalability - from 00 to 3
columns=['date', 'product','avalability_proportion'])
print desired
date product avalability_proportion
0 2017-10-19 broom 0.916667
1 2017-10-20 broom 1.000000
2 2017-10-19 bike 0.916667
3 2017-10-20 bike 0.875000
タフ: ここで提案されているように、使用可能なすべての製品に対して理論的な時間を作成する変換を作成することを考えました。元のデータへの結合を作成します。それが賢いものならば。
これについての助けがあれば、前もって感謝しています。
おかげで、しかし私はその使用不能を持っている場合、何が起こるか、2次の日付のための2つのフレームにデータというあなたの分割に留意してください3日間続きますか? –
さらに多くの行を追加できます。各行は1日を表します。しかし、おそらくそれは非常にばかに見えます。時間ウィンドウの重なりを考慮する必要があります。 – kingbase
また、私は時間のデルタではなく、比の列が欲しいことに注意してください、私は時間の違いではなく、24時間の割合としてそれをしたいです:) –