2016-10-10 9 views
1

Iは次のようにそれは構成され、パンダにcsvファイル(SimResults_Daily.csv)を読んでいる:日時形式としてCSVリードから解析中日時書式を修正 - パンダ

#, Job_ID, Date/Time, value1, value2, 
0, ID1, 05/01 24:00:00, 5, 6 
1, ID2, 05/02 24:00:00, 6, 15 
2, ID3, 05/03 24:00:00, 20, 21 

等 を読み取ることができませんpandas parse_datesによると、私はコマンド:str.replace('24:','00:')を使うことができると考えました。

私のコードは、現在、次のとおりです。

コードで、私は str.replaceコマンドを実装する必要があり
dateparse = lambda x: pd.datetime.strptime(x, '%m-%d %H:%M:%S') 

df = pd.read_csv('SimResults_Daily.csv', 
    skipinitialspace=True, 
    date_parser=dateparse, 
    parse_dates=['Date/Time'], 
    index_col=['Date/Time'], 
    usecols=['Job_ID', 
    'Date/Time', 
    'value1', 
    'value2', 
    header=0) 

答えて

2

あなたは使用することができます:ダブルreplace

import pandas as pd 
import io 

temp=u"""#,Job_ID,Date/Time,value1,value2, 
0,ID1,05/01 24:00:00,5,6 
1,ID2,05/02 24:00:00,6,15 
2,ID3,05/03 24:00:00,20,21""" 

dateparse = lambda x: pd.datetime.strptime(x.replace('24:','00:'), '%m/%d %H:%M:%S') 

#after testing replace io.StringIO(temp) to filename 
df = pd.read_csv(io.StringIO(temp), 
    skipinitialspace=True, 
    date_parser=dateparse, 
    parse_dates=['Date/Time'], 
    index_col=['Date/Time'], 
    usecols=['Job_ID', 'Date/Time', 'value1', 'value2'], 
    header=0) 

print (df) 
      Job_ID value1 value2 
Date/Time       
1900-05-01 ID1  5  6 
1900-05-02 ID2  6  15 
1900-05-03 ID3  20  21 

別の解決策 - yearを添加することもできる。

dateparse = lambda x: x.replace('24:','00:').replace(' ','/1900 ') 

df = pd.read_csv(io.StringIO(temp), 
    skipinitialspace=True, 
    date_parser=dateparse, 
    parse_dates=['Date/Time'], 
    index_col=['Date/Time'], 
    usecols=['Job_ID', 'Date/Time', 'value1', 'value2'], 
    header=0) 

print (df) 
      Job_ID value1 value2 
Date/Time       
1900-05-01 ID1  5  6 
1900-05-02 ID2  6  15 
1900-05-03 ID3  20  21 

dateparse = lambda x: x.replace('24:','00:').replace(' ','/2016 ') 

df = pd.read_csv(io.StringIO(temp), 
    skipinitialspace=True, 
    date_parser=dateparse, 
    parse_dates=['Date/Time'], 
    index_col=['Date/Time'], 
    usecols=['Job_ID', 'Date/Time', 'value1', 'value2'], 
    header=0) 

print (df) 
      Job_ID value1 value2 
Date/Time       
2016-05-01 ID1  5  6 
2016-05-02 ID2  6  15 
2016-05-03 ID3  20  21 
+0

あなたは常にスポットオンされています! – Andreuccio

+0

私は、毎日ではなく毎時の値で、同様のデータセットをインポートする作業に直面しています。したがって、 '24:'を '00:'に置き換えるのではなく、 '24:' - '23:'、...、 '01:' - '' 00: '。コードはどのように変わるでしょうか? – Andreuccio

+0

同じ方法で、 'df.index = df.index -pd.Timedelta(1、unit = 'h')'のように1時間だけ差し引くだけです。 – jezrael

関連する問題