2016-08-11 15 views
1

データフレームには、日付タイプデータを含む3つのフィールドを持つdf1という名前があります。それらを'Date 1', 'OC_Date', 'Date 2'と呼んでください。次のようにこれらの三つのフィールドの日付の形式があるパンダで特定の日付範囲のデータフレームをフィルタリングする

Date 1 < OC_Date < Date 2 

Date 1 : YYYY-MM-DD 
OC_Date: DD-MM-YYYY:HH:MM:SS # (MM is text, eg. JAN for January) 
Date 2 : YYYY-MM-DD 
私はそれが私に 'OC_Date''Date 1''Date 2'の間にある行を与えるように別のデータフレームを取得するために、このデータフレームをフィルタリングします事前に

ありがとう!

+0

が、私は変換できませんというエラーを取得しています文字列をタイムスタンプに変換することもできます。def結合メソッドも使用しましたが、同じエラーが発生します。 – Ruffy26

+0

Google、Google、Google! Googleは "pandasを文字列をdatetimeに変換"します。このページの表をご覧ください:https://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior Google for "pandas between"; "pandas apply" ... – Kartik

+0

@Kartikこの論理によって、ここに質問を投稿する人にこれを提案することができます。だれでもGoogleだけでドキュメント全体を読むことができるので、スタックオーバーフローは必要ありません。それは意味をなさない。あなたが最初に問題を解決しようとすると、あなたが立ち往生したときに質問を投稿しようとすると、質問を投稿することに何も問題はありません。それがSOのためのものです。 –

答えて

2

あなたが最初の文字列to_datetimeから列を変換しdt.dateboolean indexingと日付でフィルタリングすることができます:私はDF [DF]のように、連鎖演算子を使用してみましたが

import pandas as pd 

df = pd.DataFrame({'Date 1':['2015-01-04','2015-01-05','2015-01-05'], 
        'OC_Date':['05-JAN-2015:10:10:20', 
           '05-JAN-2015:11:15:31', 
           '05-JAN-2015:08:05:09'], 
        'Date 2':['2015-01-06','2015-01-08','2015-01-10']}) 
df['Date 1'] = pd.to_datetime(df['Date 1']) 
df['Date 2'] = pd.to_datetime(df['Date 2']) 
#http://strftime.org/ 
df['OC_Date'] = pd.to_datetime(df['OC_Date'], format='%d-%b-%Y:%H:%M:%S') 
print (df) 
     Date 1  Date 2    OC_Date 
0 2015-01-04 2015-01-06 2015-01-05 10:10:20 
1 2015-01-05 2015-01-08 2015-01-05 11:15:31 
2 2015-01-05 2015-01-10 2015-01-05 08:05:09 

print (df.dtypes) 
Date 1  datetime64[ns] 
Date 2  datetime64[ns] 
OC_Date datetime64[ns] 
dtype: object 

mask = (df['Date 1'].dt.date < df['OC_Date'].dt.date) & 
     (df['OC_Date'].dt.date < df['Date 2'].dt.date) 
print (mask) 
0  True 
1 False 
2 False 
dtype: bool 

print (df[mask]) 
     Date 1  Date 2    OC_Date 
0 2015-01-04 2015-01-06 2015-01-05 10:10:20 
+0

マジックのようなたくさんありがとう! – Ruffy26

+0

お受け取りいただきありがとうございます!あなたの次の質問のための小さな助言 - 私はあなたが[良い再現可能なパンダの例を作る方法](http://stackoverflow.com/questions/20109391/how-to-make-good-reproducible-pandas-examples)をチェックすることができると思います。その後、いくつかのコード(または擬似コードまたはいくつかのエラー)を追加することを忘れないでくださいあなたの質問は、より魅力的でないdownvotesされます。がんばろう! – jezrael

+0

アドバイスをいただき、ありがとうございます。私は一般的に、そしてSOにコーディングするのはかなり新しいです。だから、チップのおかげで。良い一日を過ごしてください! :) – Ruffy26

関連する問題