2017-06-15 23 views
1

私はこの質問でできるだけ明確にしようとします。私は毎日データを持つ一つに(あなたが見るように)毎週のデータを持つこのデータフレームに変換したい毎週のデータをPythonで毎日のデータに変換する

Date   Quantity 
05/05/2017 34 
12/05/2017 24 
19/05/2017 45 
26/05/2017 23 
2/06/2017  56 
9/06/2017  32 

:さんは、私のように形成されてデータフレームを持っているとしましょう。しかし、データフレームにはいくつかの「穴」があります(例:週末の日)。私はすでに日別の日付を別の変数に格納しています。私の考えは日付が毎週のデータフレーム(例:19/05/2017)における日前より高い場合は常に」というループを持つことです

Date   Quantity 
05/05/2017 34 
08/05/2017 34 
09/05/2017 34 
...   ... 
2/06/2017  56 
5/06/2017  56 
6/06/2017  56 
...   ... 

:私はこのような何かを得るしたいと思います 前の日付(12/05/2017)よりも、毎日のデータフレームの「数量」列に正しい数字(この場合は45)を追加したいのですが。

しかし、私はどのように行うべきか分かりませんこれはPythonで日付を数字に変換してから日付に戻すべきですか?これを行う方法は誰にでもありますか?ありがとうございます。

+0

あなたが実際に何のために毎日の日付を使用していないので、ポイントは何ですか?なぜそれを変換するのですか? – acushner

+0

、またはより一般的な意味では、毎週毎日に変換することでデータがなくなります。あなたのロジックは週単位で日単位で確認できるはずです – acushner

+0

私はコードを単純なものにしていました。毎日のデータを含む巨大なデータフレームにこの列のデータを追加するためには、データをそのようにする必要があります。問題は、このコラムでは私は毎週のデータしか持っていません – WhelanG

答えて

2

あなたの毎日データはdaysDateという名前の変数である、その後

>>>df.reindex(days).fillna(method='ffill') 

はあなたが欲しいものを返す必要があり、あなたのインデックスです。ここで

+0

これは私が探していた答えです、ありがとうございました – WhelanG

2

business day frequencyresampleを使用してオプション(B)と前方塗りつぶします:

df['Date'] = pd.to_datetime(df.Date, format='%d/%m/%Y')  
df.set_index('Date').resample('B').ffill().reset_index() 

#   Date Quantity 
#0 2017-05-05  34 
#1 2017-05-08  34 
#2 2017-05-09  34 
#... 
#20 2017-06-02  56 
#21 2017-06-05  56 
#22 2017-06-06  56 
#... 
+0

これは質問に欠けている部分を考慮に入れていません。しかし、目的の出力を得るために、この出力を目的の日付の単一列のデータフレーム、 'resampled_df.merge(days、how = 'right')'とマージすることができます。 – EFT

+0

@EFTあなたはそうです。私はその部分を逃した。 busingnessの日の頻度の 'resample'は問題を解決するはずです。 – Psidom

関連する問題