2017-04-24 8 views
0

私は以下の目標を持っています:同じテーブルの2つの日付列を比較し、比較の結果に基づいて3番目の列を作成する必要があります。 np.whereステートメントで日付を比較する方法はわかりません。PYTHON Numpyどこの時間条件

これは私の現在のコードです:

now = datetime.datetime.now() #set the date to compare 
delta = datetime.timedelta(days=7) #set delta 
time_delta = now+delta #now+7 days 

そして、ここではnp.where文です:

DB['s_date'] = np.where((DB['Start Date']<=time_delta | DB['Start Date'] = (None,"")),DB['Start Date'],RW['date']) 

日付欄を開始可能性があるかもしれない考慮に入れるOR条件があります空

+0

'| 'を'または 'に変更してみてください – eyllanesc

+0

動作していません。 "dtyped [datetime64 [ns]]配列と[bool]型のスカラー" – Filippo

+0

"を比較できません(DB ['開始日'] <=開始時刻 'DB' '開始日' '= DB ['Start Date'] == "") 'である必要があります。"(DB ['Start Date'] = time_delta | DB ['Start Date'])isnull(DB | – Abdou

答えて

0

ラムダはあなたのために働くでしょうか?これは、一連の行を見て、その行のすべての値に任意の関数を適用します。関数に返されるものはどれも、系列が返す値で埋められます。

def compare(date): 
    if date <= time_delta or date == None: 
     #return something 
    else: 
     #return something else 
DB['s_date'] = DB.apply(lambda x: compare(x)) 

EDIT:これは、同様に(感謝EyuelDK)が動作します

DB['s_date'] = DB.apply(compare) 
+1

代わりに 'DB ['s_date'] = DB.apply(compare)'を使って少し単純化することができます – EyuelDK

0

は、洞察力をいただき、ありがとうございます。私は、更新(と私の目的のために調整)のコードを以下のように、それが動作します:

now = datetime.datetime.now() #set the date to compare 
delta = datetime.timedelta(days=7) #set delta 
time_delta = now+delta #now+7 days 

DB['Start'] = np.where(((DB['Start Date']<=time_delta) | (DB['Start Date'].isnull()) | (DB['Start Date'] == "")),DB['Start'],DB['Start Date']) 

彼らは鍵がで区切られた各条件に()を追加しました|。そうでなければ、2つの異なるデータ型を比較す​​ることによってエラーが発生していました。