2016-06-21 74 views
-2

我有一個有序的字典"my_dict「,它在循環過程中得到了用n時間序列填充的所有n時間序列有相同的長度,而且是1維的,它們都具有一個日期時間索引。從OrderedDict導入熊貓數據框 - Python等價於R的do.call(合併,列表)

在RI只需運行do.call(merge, my_dict),其中my_dictlist()和我獲得具有單一索引的m x n xts對象。

在Python然而pandas.concat(my_dict, axis = 1)返回一個索引數據框(這是好的),但是所有的列都來自t他幾秒鐘就是NaN。什麼是正確的命令?

+0

您可以添加樣本和期望的輸出嗎?因爲對我而言,如果'concat' OrderedDict' – jezrael

+0

。@ Pat,請返回'TypeError:無法連接非NDFrame對象',請添加數據以及您之後的輸出。爲什麼使用有序字典? – Merlin

+0

'pandas.DataFrame(my_dict)'應該這樣做。 – JaminSore

回答

0

A pandas.DataFrame可以直接從字典中構建,因此您只需將my_dict傳遞給pandas.DataFrame構造函數(即pandas.DataFrame(my_dict))即可。例如:

import pandas 
from collections import OrderedDict 
import numpy as np 

m = 10 
n = 5 

index = pandas.date_range('1/1/2015', periods=m, freq='D') 
my_dict = OrderedDict() 

for i in range(1, n+1): 
    my_dict['var_%d' % i] = pandas.Series(np.random.randn(index.shape[0]), index=index) 

print(pandas.DataFrame(my_dict)) 

       var_1  var_2  var_3  var_4  var_5 
2015-01-01 0.562952 0.708099 0.488981 -1.360356 -0.036179 
2015-01-02 -0.481410 0.604777 0.233426 -0.784103 1.879795 
2015-01-03 1.188333 0.299547 -0.578365 0.882410 0.919328 
2015-01-04 -1.002273 0.794856 -0.527205 1.474524 -0.798646 
2015-01-05 -0.025225 2.246476 -0.460735 0.272014 -0.061749 
2015-01-06 -1.304233 1.204737 0.040275 0.293035 0.831555 
2015-01-07 -0.934804 0.922393 0.633133 1.064837 -0.154307 
2015-01-08 0.440650 0.235624 0.765399 0.306628 -0.274465 
2015-01-09 1.637787 -0.158231 -0.643112 -1.128660 0.393349 
2015-01-10 0.145501 -0.667916 1.094961 -1.669178 0.447021 
+0

這將返回「ValueError:如果使用所有標量值,則必須傳遞索引」。它有可能與日期時間索引有微秒頻率的索引相提並論嗎? – Pat

+0

不,這與微秒頻率一樣好。當你說「時間序列」時,你的意思是帶有日期時間索引或其他東西的「pandas.Series」對象嗎?你能否在你的OrderedDict中提供一個數據樣本? – JaminSore