熊猫从字典中的矩阵创建数据框架

时间:2016-12-12 21:45:22

标签: python pandas dataframe

我有一个字典Dict1,密钥为Dates and Sims.

Dates是一个形状为100x1的数组,Sims的形状为100x5

我在尝试:

import pandas as pd
df = pd.Dataframe.from_dict(Dict1) 

但由于模拟人生的大小而出错。有没有办法我可以创建DataFrame,每行列的Sims大小为5?即每行可以存储为大小为5的列表或数组。

编辑:

Dict1['Dates']
array([datetime.datetime(2016, 11, 1, 0, 0),
       datetime.datetime(2016, 11, 1, 1, 0),
       datetime.datetime(2016, 11, 1, 2, 0), ...,
       datetime.datetime(2025, 12, 31, 21, 0),
       datetime.datetime(2025, 12, 31, 22, 0),
       datetime.datetime(2025, 12, 31, 23, 0)], dtype=object)


Dict1['Sims']

array([[ 63.89694316,  35.8551162 ,  40.36134283, 57.23648392,
         35.96607425,  61.166471  ],
       [ 47.94894386,  53.95396849,  48.94336457, 51.04541849,
         28.69973176,  49.78683505],
       [ 63.90314179,  43.29467789,  36.97811714, 52.33639618,
         45.24190878,  69.9059308 ]...]])

EDIT2:

我希望创建数据框,以便我可以执行以下操作:

print(df[datetime.datetime(2016, 11, 1, 0, 0)])

[ 63.89694316,  35.8551162 ,  40.36134283, 57.23648392,
                 35.96607425,  61.166471  ]

1 个答案:

答案 0 :(得分:2)

您可以使用df = pd.DataFrame(Dict1['Sims'], index=Dict1['Dates']) df.ix[datetime.datetime(2016, 11, 1, 0, 0)] 作为索引。

df.ix[key]

请注意,您应该使用df[key]索引器,因为list默认为查找列,而不是行。

或者,如果您确实需要包含Dict1['Sims']的单个列,请确保在创建数据框之前df = pd.DataFrame({'Sims': Dict1['Sims'].tolist()}, index=Dict1['Dates']) 是Python列表,而不是Numpy数组。

{'Sims': ...}

list结构欺骗Pandas将数据解释为单个docker run -v c:\temp\website:/var/www/html (you get the picture) 系列,而不是多维数组。