2017-01-16 11 views
1

に私は、次のデータフレームを持っている:パイソン:タイムスタンプの日時

df = pd.DataFrame({'user': ['Andrea', 'Gioele'], 
        'year': [1983, 2014], 
        'month': [11, 1], 
        'day': [8, 11]}) 

その後、私は二つの方法ですべての行の日付を作成します。 まず:

df['dateA'] = df.apply(lambda x: datetime.date(x['year'],x['month'],x['day']), axis=1) 

セカンド:

df['dateB'] = pd.to_datetime(df[['year','month','day']]) 

I以下のデータフレームを有する:また

>>> df['dateA'] 
1983-11-08 
2014-01-11 
Name: dateA, dtype: object 
>>> df['dateB'] 
1983-11-08 
2014-01-11 
Name: dateB, dtype: datetime64[ns] 

:私は2つの異なるフォーマットを有する

>>> df 
10: day month user year  dateA  dateB 
0  8  11 Andrea 1983 1983-11-08 1983-11-08 
1  11  1 Gioele 2014 2014-01-11 2014-01-11 

>>> df['dateA'].iloc[0] 
datetime.date(1983, 11, 8) 
>>> df['dateB'].iloc[0] 
Timestamp('1983-11-08 00:00:00') 

問題は、第一の方法で日付を計算することは非常に高価であるということですので、私はそれは形式「オブジェクト」を持っていることdf['dateB']などを変換したいと思います。方法はありますか?

注:私はすでに(彼らは常に文字列ではなく、タイムスタンプを持っている)可能性が示唆「の質問に重複し」何を試してみましたが、私は次のよう

>>> datetime.datetime.fromtimestamp(df['dateB'].iloc[0]) 
Traceback (most recent call last): 
    File "<pyshell#68>", line 1, in <module> 
    datetime.datetime.fromtimestamp(df['dateB'].iloc[0]) 
TypeError: a float is required 
+1

['df ['dateB'] .dt.to_pydatetime'](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.dt.to_pydatetime.html) – EdChum

+0

基本的には、これは以下のいずれかです:http://stackoverflow.com/questions/22825349/converting-between-datetime-and-pand as timestamp-objectsまたはthis:http://stackoverflow.com/questions/37644199/pandas-convert-timestamp-column-to-datetime – EdChum

+0

あなたはそうです:コンバージョンに関する多くの質問がありました私は「文字列」からしか見つかりませんでした。実際にタイムスタンプのものもありました。 –

答えて

1

は、私はあなたが使用することができると思う得るdt.date

df['dateB'] = pd.to_datetime(df[['year','month','day']]).dt.date 

print (df['dateB'].dtype) 
object 

print (type(df['dateB'].iloc[0])) 
<class 'datetime.date'> 
関連する問題