2017-10-31 9 views
0

私はプロットしたいcsvファイルをたくさん読み込んでおり、日付と時刻を表す列タイトルを持っています。例えばdatetime(data_string [found.end():]))に変換する際に問題が発生する形式

14/01/2015 14:27 14/01/2015 14:27 
29.97299 30.05902 
30.00391 30.09555 

何らかの理由で、異なるファイルが異なるフォーマットにロードされ、これらの日付と時刻を取得し、それらを変換するとき、私はトラブルに実行しています。

私の現在のコード:私は取得していますなぜ私は理解していない

File "D:/data/scripts/myscript.py", line 29, in <module> 
    time = datetime.strptime(t, '%d/%m/%Y %H:%M') 

    File "C:\Users\me\AppData\Local\Continuum\Anaconda2\lib\_strptime.py", line 335, in _strptime 
    data_string[found.end():]) 

ValueError: unconverted data remains: .1 

:(トレースバック付き)エラーが続く

2015-01-14 10:50:19 
Fig 1 
2015-01-14 14:01:15 
Fig 2 
2015-01-14 14:13:08 
Fig 3 
2015-01-14 14:27:53 
Fig 4 
2015-01-14 14:40:00 
Fig 5 
15/01/2015 13:03 
Traceback (most recent call last): 

for n, f in enumerate(files): 
    df = pd.read_csv(filePath+f, delimiter=',',index_col=0) 
    times = [] 
    print df.columns.values[1] 
    for i, t in enumerate(df.columns.values): 
     if t[2]=='/': 
      time = datetime.strptime(t, '%d/%m/%Y %H:%M') 
     elif t[4]=='-': 
      time = datetime.strptime(t, '%Y-%m-%d %H:%M:%S') 
     else: 
      print "Is it a date? ", t 
     times.append(time) 
    timelists.append(times) 
    fig = plt.figure() 
    df.plot() 
    plt.savefig(figdir+(n+1).__str__()+"_"+f+".png", bbox_inches='tight',dpi=300) 
    print "Fig", n+1 
    plt.close(n) 

がこれを生成しますこのエラーは、最後に印刷された日付は、指定した形式になっていますか?そうではありませんか? data_string[found.end():])の意味は?

答えて

1

エラーメッセージは、strptimeが、秒またはマイクロ秒などの形式で指定された情報よりも多くの情報を含む文字列を変換していることを意味します。たとえば、'14/01/2015 14:27:00.000 'からstrptimeまで%d/%m/%Y %H:%Mの形式でプッシュしようとすると、同じエラーが発生します。私の例でこれを動作させるには、strptime - %d/%m/%Y %H:%M:%S.%fという形式を使用する必要があります。

あなたのファイルがどのようなものかはっきりとは分かりませんが、パンダライブラリーは非常に良い日時の理解度を持っています。以前に問題があったのかどうかは分かりませんが、私の経験では、あまりにも(もしあれば)騒がしいことなくフォーマットを正しく推測しています。

EDIT:実際にpandasで投稿したファイルスニペットを読むと、列名が一意でなければならないので、列名に日付が付けられ、.1が2番目の列に追加されます。 .1は、正確に日付\時間文字列の一部で、strptimeの呼び出しで指定された形式では取り込まれていないようです。だから多分あなたはすでにあなたの処理のある時点でパンダを使用しています。パンダはデフォルトでカラム名をdatetimeにしないことに注意してください。

+0

あなたは正しいです!私は質問を編集しています。ですから問題は、パンダがさまざまなフォーマットのファイルを読み込む理由です。視覚的に(私がそれらを開いても)同じように見えます。または、新しい質問かもしれません。 – durbachit

+0

OK、1つのエラーのあるデータファイルには秒がないため、別の形式で読み取られます。今それは動作するはずです。ありがとう! – durbachit

関連する問題