2017-03-16 5 views
2

Nun, das ist peinlich ... Ich versuche eine good reproducible pandas example zu erstellen, indem ich euch eine kleine Probe meines Datensatzes gebe. Ich dachte, das wäre einfach mit df.to_dict(), aber ohne Erfolg.Pandas to_dict() Returning "Timestamp"

df2 = df1[['DATE_FILLED','DAYS_SUPPLY']].head(5) 
df2['DATE_FILLED'] = pd.to_datetime(df2['DATE_FILLED']) 
diction = df2.to_dict() 

Ausgang:

{'DATE_FILLED': {0: Timestamp('2016-12-28 00:00:00'), 
       1: Timestamp('2016-12-31 00:00:00'), 
       2: Timestamp('2016-12-20 00:00:00'), 
       3: Timestamp('2016-12-21 00:00:00'), 
       4: Timestamp('2016-12-26 00:00:00')}, 
    'DAYS_SUPPLY': {0: 14, 1: 14, 2: 14, 3: 7, 4: 7}} 

Aber wenn die Gemeinde es zu einem Datenrahmen unter Verwendung des Textes zu konvertieren sind:

import pandas as pd 
from datetime import datetime 
import time 
d= pd.DataFrame({'DATE_FILLED': [Timestamp('2016-12-28 00:00:00'), Timestamp('2016-12-31 00:00:00'), Timestamp('2016-12-20 00:00:00'), Timestamp('2016-12-21 00:00:00'), Timestamp('2016-12-26 00:00:00')], 'DAYS_SUPPLY': [14, 14, 14, 7, 7]}) 

würden Sie NameError: name 'Timestamp' is not defined bekommen. Ich habe versucht, verschiedene Dinge zu importieren und sogar versucht, mit den verschiedenen orients in pd.to_dict() herumspielen.

Wie konvertiere ich entweder die Timestamps oder noch besser, erstellen Sie einen DataFrame von ihnen?

Antwort

9

Sie müssen Timestamp von pandas importieren:

>>> import pandas as pd 
>>> from pandas import Timestamp 
>>> d= pd.DataFrame({'DATE_FILLED': [Timestamp('2016-12-28 00:00:00'), Timestamp('2016-12-31 00:00:00'), Timestamp('2016-12-20 00:00:00'), Timestamp('2016-12-21 00:00:00'), Timestamp('2016-12-26 00:00:00')], 'DAYS_SUPPLY': [14, 14, 14, 7, 7]}) 
>>> 
>>> d 
    DATE_FILLED DAYS_SUPPLY 
0 2016-12-28   14 
1 2016-12-31   14 
2 2016-12-20   14 
3 2016-12-21   7 
4 2016-12-26   7 
>>> 

In Zukunft können Sie immer Selbstbeobachtung verwenden Sie einen guten Hinweis geben:

>>> ts = d.to_dict()['DATE_FILLED'][0] 
>>> type(ts) 
<class 'pandas.tslib.Timestamp'> 
>>> from pandas.tslib import Timestamp 
5

Sie müssen nur importieren Zeitstempel:

from pandas import Timestamp 

d = {'DATE_FILLED': {0: Timestamp('2016-12-28 00:00:00'), 
       1: Timestamp('2016-12-31 00:00:00'), 
       2: Timestamp('2016-12-20 00:00:00'), 
       3: Timestamp('2016-12-21 00:00:00'), 
       4: Timestamp('2016-12-26 00:00:00')}, 
    'DAYS_SUPPLY': {0: 14, 1: 14, 2: 14, 3: 7, 4: 7}} 



pd.DataFrame(d) 
Out: 
    DATE_FILLED DAYS_SUPPLY 
0 2016-12-28   14 
1 2016-12-31   14 
2 2016-12-20   14 
3 2016-12-21   7 
4 2016-12-26   7 
+1

Beat mich um 17 Sekunden! –

+2

Statt einer dritten Antwort mit identischem Inhalt ... bleibe ich beim Upbooten ;-) Schön, dass du Antworten auf Fragen bekommst. – piRSquared

+0

Ich wusste, dass es so einfach war ... Konnte nicht in der Dokumentation * irgendwo * – MattR

2

import module gibt nicht den Namen des Moduls ein s in den globalen Namespace, müssen Sie über module.name darauf zugreifen. Um die Modulnamen in den globalen Namespace einzugeben, müssen Sie die Syntax from module import verwenden. In diesem Fall entweder from pandas import Timestamps, die Timestamps in den globalen Namespace eingibt, oder from pandas import *, die alle Namen in Pandas in den globalen Namespace importiert.

+1

Danke für die Erklärung! Dies wird sicherlich in der Zukunft helfen – MattR

Verwandte Themen