2016-10-21 1 views
0

dateutilの相対デルタを使用してクラスのエラーが発生しました。私のコードはここにある:dateutilのrelativedeltaで+1(期間)と-1日を追加する際の問題

#import packages 
import numpy as np 
import pandas as pd 
import datetime as dt 
from dateutil.relativedelta import relativedelta 
from pandas import DataFrame 
from pandas import Series 

#timing 
pers = 12 
monthpp = 1 
month_per = int(pers/monthpp) 

sdate = dt.date(2016,1,1) 
ops = dt.date(2016,3,15) 

bop1 = sdate 
eop1 = bop1 + relativedelta(months =+ 1, days =- 1) 
edate = sdate + relativedelta(months =+ month_per) 

rng_bop = pd.date_range(bop1, freq = 'MS', periods = pers) 
rng_eop = pd.date_range(eop1, freq = 'M', periods = pers) 

ops_line = ops >= rng_bop and ops <= rng_eop 

#outputs 
print(sdate) 
print(edate) 
print(rng_bop) 
print(rng_eop) 

誰かが私の方法へのより良い代替手段を持っている場合、私はそれに開いているだろう - 私は、PythonにExcelのものを翻訳しようとしている、超効率的にそれをやっていない可能性があります。

この部分の目標は、月、四半期、または半年または半年ごとに期間を調整できることですが、今のところ数カ月でうれしいです。 EOPラインは(BOP +期間 - 1日)にする必要があります。

また、私のops_line定義がうまくいかないと思います。論理演算子からブール値の配列を作成しようとしています。任意のポイント?

+0

私はあなたのコードをコメントするか、少なくともあなたの変数のための適切なネーミングを使用するようにアドバイスしたいと思います。 –

+0

適切な命名法を拡張するのに気をつけてください。 – user7038639

+0

'rng_bop'はどういう意味ですか?もちろん、あなたはそれを理解していて、その言葉の略語を知っていて、人々がどのようにそれを捉えることができないのだろうと思うかもしれませんが、本当に多くの人がそのような質問に答えるのをスキップします。私はスタックオーバーフローに関する質問に答える前に、少なくとも私がコードにジャンプして読んでそれを理解してみるだけでなく、質問を読む前に穴を見つけようとしていることをよく知っています。私/私は変数が私にそれをスキップする意味がない質問が発生します。私は入力としてこれを批判ではないと願っています –

答えて

1

後者は1ヶ月と日を割り当て、-1それぞれ

+0

これを行うことで無効な構文エラーが発生しました。 Dateutilのサンプルコードの例では、+ =または= - を使用しているようです... – user7038639

+0

値を+1および-1に設定しようとしていますか?またはそれぞれ1ずつインクリメントおよびデクリメントすることができますか?後者があなたがしようとしているものなら、私が提供した構文が正しいものです。実際には、Pythonだけでなくすべてのプログラミング言語に対応しています –

0

レオWahydは=+/=-述べたように、ほとんどの言語で無効な構文であるとして、それはmonths += 1, days-= 1ないmonths =+ 1, days =- 1であるべきです。

読むdocumentation

年、月、週、日、時間、分、秒、マイクロ秒:
相対情報、負でもよい(引数が複数あります)。 を追加するか、または相対情報を持つrelativedeltaを減算すると、元のdatetime値 の対応するaritmetic操作が、relativedeltaの情報で で実行されます。

私は実際に、それはそれがあるべき、と思う:

eop1 = bop1 + relativedelta(months = 1, days = -1) 
edate = sdate + relativedelta(months = month_per) 
関連する問題