2017-03-16 120 views
2

嗯,這是令人尷尬的......我試圖創建一個good reproducible pandas example給你們一個小樣本我的數據集。我認爲這將是簡單的df.to_dict(),但無濟於事。大熊貓to_dict()返回「時間戳」

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

輸出:

{'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}} 

但是,如果社會是通過文字把它轉換成數據幀:

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]}) 

他們會得到NameError: name 'Timestamp' is not defined。 我試過導入各種東西,甚至嘗試在pd.to_dict()中使用不同的orients

我該如何轉換Timestamps或更好呢,從它們創建一個DataFrame?

回答

9

您需要導入Timestamppandas

>>> 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 
>>> 

在未來,你可以隨時使用內省給你一個很好的提示:

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

你只需要導入時間戳:

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

擊敗我17秒! –

+2

而不是第三個具有相同內容的答案...我會堅持upvoting ;-)很高興看到你回答問題。 – piRSquared

+0

我知道這是這個簡單的...無法在文檔*任何地方找到* – MattR

2

import module未輸入模塊名稱s到全局命名空間中,您必須通過module.name訪問它們。要將模塊名稱輸入到全局名稱空間中,您需要使用from module import語法。在這種情況下,要麼輸入Timestamps到全局命名空間的from pandas import Timestamps,要麼from pandas import *,它將pandas中的所有名稱導入到全局命名空間。

+1

謝謝你的解釋!這對未來肯定有幫助 – MattR