熊猫to_dict()返回“时间戳”

时间:2017-03-16 20:43:15

标签: python pandas dataframe

这很令人尴尬......我试图通过给你们一些我的数据集样本来创建一个good reproducible pandas example。我认为(%i5) myList(expr, iMin, iMax) := apply (makelist, [expr, i, iMin, iMax]) $ (%i6) expr:i^2 $ (%i7) myList(expr, 1, 5); (%o7) [1, 4, 9, 16, 25] 这很简单,但无济于事。

df.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]}) 。 我尝试过导入各种内容,甚至尝试使用pd.to_dict()中的不同NameError: name 'Timestamp' is not defined

如何转换orients或更好,从中创建一个DataFrame?

3 个答案:

答案 0 :(得分:12)

您需要从Timestamp导入pandas

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

答案 1 :(得分:6)

您只需导入时间戳:

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

答案 2 :(得分:2)

import module未将模块名称输入全局命名空间,您必须通过module.name访问它们。要将模块的名称输入全局命名空间,您需要使用from module import语法。在这种情况下,from pandas import TimestampsTimestamps输入全局命名空间,或from pandas import *,将pandas中的所有名称导入全局命名空间。