2017-05-14 7 views
1

「C.csv」で読み込み済みで、「datetime」列は「オブジェクト」型です。 日付に関係なく、23:45:00の行を取得したいですか?私はインデックスとして '日時'を持っていると私はdatetime64 [ns]に 'datetime'インデックスを変換したいと思います。私はパンダはこの種のもののために設計されていると思うが、私は私のインデックスとデータ型が混ざっている。pandasデータフレームから特定の時刻に発生する行のみを選択します。

import datetime as dt 
    import pandas as pd 
    df = pd.read_csv('C.csv', index_col = 'datetime', parse_dates=['datetime']) 
        C  H  L  O OI V WAP 
datetime              
2017-04-22 09:23:00 39.48 39.48 39.48 39.48 0 0 39.48 
2017-04-22 09:24:00 39.48 39.48 39.48 39.48 0 0 39.48 
2017-04-22 09:25:00 39.48 39.48 39.48 39.48 0 0 39.48 
2017-04-22 09:26:00 39.44 39.44 39.44 39.44 1 4 39.44 
2017-04-22 09:27:00 39.48 39.48 39.48 39.48 3 2 39.48 

答えて

0
print(df) 
       datetime  C  H  L  O OI V WAP 
0 2017-04-22 09:23:00 39.48 39.48 39.48 39.48 0 0 39.48 
1 2017-04-22 09:24:00 39.48 39.48 39.48 39.48 0 0 39.48 
2 2017-04-22 09:25:00 39.48 39.48 39.48 39.48 0 0 39.48 
3 2017-04-22 09:26:00 39.44 39.44 39.44 39.44 1 4 39.44 
4 2017-04-22 09:27:00 39.48 39.48 39.48 39.48 3 2 39.48 
5 2017-04-23 09:25:00 39.48 39.48 39.48 39.48 3 2 39.48 

datetimeインデックスを作成し、そして日時dtypeに変換:

df.set_index('datetime', inplace=True) 
df.index = pd.to_datetime(df.index) 

print(df.index.dtype) 
dtype('<M8[ns]') 

次にマッチすることにより、所望の時間及びフィルタにタイムスタンプを一致設定:

match_timestamp = "09:25:00" 
df.loc[df.index.strftime("%H:%M:%S") == match_timestamp] 

         C  H  L  O OI V WAP 
datetime              
2017-04-22 09:25:00 39.48 39.48 39.48 39.48 0 0 39.48 
2017-04-23 09:25:00 39.48 39.48 39.48 39.48 3 2 39.48 

(タイムスタンプ23:45:00はサンプルデータには含まれていませんが、一致する今度はmatch_timestampを調整してください)

+0

ありがとうございました。 –

+0

あなたは大歓迎です!問題を解決した場合は、この回答に合格とマークしてください。 –

関連する問題