2012-08-07 86 views
1

我創造Pandas-熊貓搞亂數據幀

df_data = dict() 

for x in data: 
    series = pandas.Series(x['value']['values'], index=x['value']['timestamps']) 

    df_data[x['_id']] = series 

df = pandas.DataFrame(df_data) 

data數據幀是在格式 -

{u'_id': u'770000000049', 
u'value': {u'timestamps': [datetime.datetime(2012, 7, 25, 10, 16, 1, 270000), 
          datetime.datetime(2012, 7, 25, 10, 18, 29, 745000), 
          datetime.datetime(2012, 7, 25, 10, 21, 54, 931000), 
          datetime.datetime(2012, 7, 25, 10, 23, 18, 896000)], 
      u'values': [204.0, 16.788, 139.2, 116.004]}} 

打印的例子系列類型的字典列表給出了我 -

>>> print df_data['770000000049'] 

>>> 2012-07-25 10:16:01.270000 204.000 
2012-07-25 10:18:29.745000  16.788 
2012-07-25 10:21:54.931000 139.200 
2012-07-25 10:23:18.896000 116.004 

正如所料。然而,打印結果數據幀給我 -

>>> print df['770000000049'] 

>>> 1992-06-05 15:50:11.527680 NaN 
2181-10-17 22:55:34.850625 NaN 
2215-08-27 21:41:15.306049 NaN 
1936-05-22 00:55:45.848401 NaN 
1783-06-08 06:38:26.257076 NaN 
2017-03-12 18:30:17.469108 NaN 
2209-08-06 03:45:09.779652 NaN 
1768-02-06 12:00:22.653272 NaN 
1916-07-20 06:51:31.628376 NaN 
2086-01-25 18:30:58.261336 NaN 
1940-08-26 15:13:33.790568 NaN 
1712-12-17 22:48:01.743241 NaN 
1803-06-16 16:32:58.309017 NaN 
1981-11-05 04:38:27.140059 NaN 
2246-05-25 09:09:27.875035 NaN 
... 

WTF!數據都是錯誤的。鍵和值都是完全錯誤的。

我在做什麼錯?

編輯:打印df給我 -

DatetimeIndex: 386 entries, 1992-06-05 15:50:11.527680 to 1774-08-13 02:00:15.237103 
Data columns: 
770000000006 0 non-null values 
770000000009 0 non-null values 
770000000010 0 non-null values 
770000000011 0 non-null values 
770000000012 0 non-null values 
770000000013 0 non-null values 
770000000018 0 non-null values 
770000000020 0 non-null values 
770000000021 0 non-null values 
770000000022 0 non-null values 
770000000024 0 non-null values 
770000000029 0 non-null values 
770000000030 0 non-null values 
770000000032 0 non-null values 
770000000034 0 non-null values 
770000000049 0 non-null values 
dtypes: float64(16) 

完全錯誤

編輯2

我已經written a module再現的錯誤我。

+0

請在GitHub中發佈bug報告,而不是StackOverflow – 2012-08-07 18:32:06

+0

@WesMcKinney嗯,我不知道這是一個合法的錯誤。但它確實看起來很可疑。我更想知道我是否做錯了 – user1569050 2012-08-07 18:38:10

+0

我可以重現它(請參閱edit2)並在GitHub上爲此打開了一個問題:https://github.com/pydata/pandas/issues/1753 – 2012-08-10 14:45:49

回答

0

我跑了你粘貼的片段,這對我來說似乎很好。你使用的是什麼版本的熊貓/ numpy?你能發佈所有/更多的數據嗎?

In [26]: paste 
{u'_id': u'770000000049', 
u'value': {u'timestamps': [datetime.datetime(2012, 7, 25, 10, 16, 1, 270000), 
          datetime.datetime(2012, 7, 25, 10, 18, 29, 745000), 
          datetime.datetime(2012, 7, 25, 10, 21, 54, 931000), 
          datetime.datetime(2012, 7, 25, 10, 23, 18, 896000)], 
      u'values': [204.0, 16.788, 139.2, 116.004]}} 
## -- End pasted text -- 
Out[26]: 
{u'_id': u'770000000049', 
u'value': {u'timestamps': [datetime.datetime(2012, 7, 25, 10, 16, 1, 270000), 
    datetime.datetime(2012, 7, 25, 10, 18, 29, 745000), 
    datetime.datetime(2012, 7, 25, 10, 21, 54, 931000), 
    datetime.datetime(2012, 7, 25, 10, 23, 18, 896000)], 
    u'values': [204.0, 16.788, 139.2, 116.004]}} 

In [27]: data = [_] 

In [28]: paste 
df_data = dict() 

for x in data: 
    series = pandas.Series(x['value']['values'], index=x['value']['timestamps']) 

    df_data[x['_id']] = series 

df = pandas.DataFrame(df_data) 
## -- End pasted text -- 

In [29]: print df['770000000049'] 
2012-07-25 10:16:01.270000 204.000 
2012-07-25 10:18:29.745000  16.788 
2012-07-25 10:21:54.931000 139.200 
2012-07-25 10:23:18.896000 116.004 
Name: 770000000049 
+0

謝謝Chang。我會用更多的「可重複」代碼更新這個問題 – user1569050 2012-08-07 17:28:36

+0

我已經更新了它:-) – user1569050 2012-08-07 17:38:12