2

いくつかの日時データをpandas.to_datetime()形式に変換しようとしています。動作しておらず、のタイプはdf['Time']ですObject。どこが間違っていますか?

私のタイムファイルを添付したことに注意してください。

マイコード

import pandas as pd
import numpy as np
from datetime import datetime

f = open('time','r')
lines = f.readlines()

t = []
for line in lines:
    time = line.split()[1][-20:]
    time2 = time[:11] + ' ' +time[12:21]
    t.append(time2)



df = pd.DataFrame(t)
df.columns = ['Time']
df['Time'] = pd.to_datetime(df['Time'])

print df['Time'] 


Name: Time, Length: 16136, dtype: object

アタッチタイムデータファイルはこちら

4

1 に答える 1

3

ファイルtimeに無効なデータが含まれています。

たとえば、8323 行には が含まれ8322 "5/Jul/2013::8:25:18 0530"ており、通常の行とは異なります8321 "15/Jul/2013:18:25:18 +0530"

8321 "15/Jul/2013:18:25:18 +0530"
8322 "5/Jul/2013::8:25:18  0530"

通常の行の場合は にtime2なり15/Jul/2013 18:25:18ますが、無効な行の場合は"5/Jul/2013::8:25:18

15/Jul/2013 18:25:18
"5/Jul/2013::8:25:18

一部の行は日時に解析され、一部の行は解析されません。データはオブジェクトに変換されます (日時と文字列の両方を含む)。

>>> pd.Series(pd.to_datetime(['15/Jul/2013 18:25:18', '15/Jul/2013 18:25:18']))
0   2013-07-15 18:25:18
1   2013-07-15 18:25:18
dtype: datetime64[ns]

>>> pd.Series(pd.to_datetime(['15/Jul/2013 18:25:18', '*5/Jul/2013 18:25:18']))
0    15/Jul/2013 18:25:18
1    *5/Jul/2013 18:25:18
dtype: object

ファイルから最初の 5 つのデータ (正しい日付形式を持つ) のみを取得すると、期待した結果が得られます。

...
df = pd.DataFrame(t[:5])
df.columns = ['Time']
df['Time'] = pd.to_datetime(df['Time'])

上記のコードは次のとおりです。

0   2013-07-15 00:00:12
1   2013-07-15 00:00:18
2   2013-07-15 00:00:23
3   2013-07-15 00:00:27
4   2013-07-15 00:00:29
Name: Time, dtype: datetime64[ns]

アップデート

objectdtype of , notの原因を示す小さな例を追加しましたdatetime

于 2013-07-17T17:51:30.707 に答える