2016-09-23 11 views
1

から抽出日時私はタイムスタンプが、私はそれから日付と時刻を抽出したい次の形式パンダ:タイムスタンプ

2016-06-16T21:35:17.098+01:00 

であるtimestamp列を持っています。私は以下を行った:

import datetime as dt 

df['timestamp'] = df['timestamp'].apply(lambda x : pd.to_datetime(str(x))) 

df['dates'] = df['timestamp'].dt.date 

これはしばらくの間働いた。しかし突然それはしません。

私は再びdf['dates'] = df['timestamp'].dt.date私は幸運なことに、次のエラー

Can only use .dt accessor with datetimelike values 

を取得しない場合、私はcsvファイルでdates持つデータフレームを保存しているが、私は今フォーマット23:00:00.051

に別の列 timeを作成したいです

編集

生データファイル(1,500万サンプル)から、timestamp列はli KE(第5サンプル)以下:

df['timestamp'] = df['timestamp'].apply(lambda x : pd.to_datetime(str(x))) 

timestamp列はDTYPEとしてdtype有するように見え、次のコマンドの後

  timestamp 

0   2016-06-13T00:00:00.051+01:00 
1   2016-06-13T00:00:00.718+01:00 
2   2016-06-13T00:00:00.985+01:00 
3   2016-06-13T00:00:02.431+01:00 
4   2016-06-13T00:00:02.737+01:00 

:datetime64 [NS]次に

0 2016-06-12 23:00:00.051 
1 2016-06-12 23:00:00.718 
2 2016-06-12 23:00:00.985 
3 2016-06-12 23:00:02.431 
4 2016-06-12 23:00:02.737 

最終的

df['dates'] = df['timestamp'].dt.date 

0   2016-06-12 
1   2016-06-12 
2   2016-06-12 
3   2016-06-12 
4   2016-06-12 

EDIT 2

間違いを発見しました。私はデータを消去し、データフレームをCSVファイルに保存していたので、もう一度クリーニングを行う必要はありません。私がcsvを読むと、タイムスタンプdtypeがオブジェクトに変わります。今私はこれをどのように修正するのですか?

+2

これらのダフの値を 'NaT'に強制することができるように、ダフの値があることを意味します:' df ['timestamp'] = pd.to_datetime(df ['timestamp']、errors = 'coerce') ' 'dropna'を使用してこれらの値を取り除くことができます。その後、' dt.date'を前のように呼び出すことができます。 – EdChum

+0

'df.timestamp.isnull()。sum()'は0を返します。 –

+0

生データとコードを投稿しない限りエラーがある場合、これは時間を無駄にする仮定的なポスティング運動になります – EdChum

答えて

4

インポート日時

オブジェクトコードの最初の行をスキップするよりも、タイムスタンプ形式で既にある場合、日付は、次に

df['DateTime'] = [datetime.datetime.strptime(d, "%Y-%m-%d %H:%M") for d in 
df["DateTime"]]# this line converts the string object in Timestamp object 
df['Date'] = [datetime.datetime.date(d) for d in df['DateTime']]# extracting date from timestamp 
df['Time'] = [datetime.datetime.time(d) for d in df['DateTime']]# extracting time from timestamp 

文字列形式である場合。

"%Y-%m-%d%H%M:これは、タイムスタンプオブジェクトが" 2016-05-16 12:35:00 "のような形式でなければならないことを意味します。

関連する問題