2017-02-07 5 views
1

pandas date_rangeからネストされたdictを取得したいと思います。辞書のキーは日付と値、選択した範囲内のすべての値のリストでなければなりません。例えば:pandas date_range to nested json

{ 
     '01-01-2017 01:01:00': [5], 
     '01-01-2017 00:02:00': [10], 
     '01-01-2017 00:03:00': [20], 
     '01-01-2017 00:04:00': [30] 
} 

時間によって:

{ 
     '01-01-2017 01': [5], 
     '01-01-2017 00: [10, 20, 30] 
} 

がためである分単位で

import numpy as np 
import pandas as pd 
import arrow 

mymatrix = pd.DataFrame([ 
[pd.Timestamp(arrow.get('01-01-2017 01:01:00', 'DD-MM-YYYY HH:mm:ss').naive), 5], 
[pd.Timestamp(arrow.get('01-01-2017 00:02:00', 'DD-MM-YYYY HH:mm:ss').naive), 10], 
[pd.Timestamp(arrow.get('01-01-2017 00:03:00', 'DD-MM-YYYY HH:mm:ss').naive), 20], 
[pd.Timestamp(arrow.get('01-01-2017 00:04:00', 'DD-MM-YYYY HH:mm:ss').naive), 30] 

])

をし、私のような何かを取得したいです私が避けたいので、大きなデータセット私はpandas/numpyで直接これをやりたいと思います。

誰でも私を助けることができます。

答えて

0

が、私は試してみて、パンダ/ numpyののすべてを続けるだろうが何であるかを矢印わかりません。

mymatrix = pd.DataFrame([ 
[pd.Timestamp('01-01-2017 01:01:00'), 5], 
[pd.Timestamp('01-01-2017 00:02:00'), 10], 
[pd.Timestamp('01-01-2017 00:03:00'), 20], 
[pd.Timestamp('01-01-2017 00:04:00'), 30]]) 

次に、インデックスを設定してresampleを使用できます。

df = mymatrix.set_index(0) 

         1 
0      
2017-01-01 01:01:00 5 
2017-01-01 00:02:00 10 
2017-01-01 00:03:00 20 
2017-01-01 00:04:00 30 

df.resample('H').apply(lambda x: x.values.tolist()).to_dict()[1] 

{Timestamp('2017-01-01 00:00:00'): [10, 20, 30], 
Timestamp('2017-01-01 01:00:00'): [5]} 
0

はこれを試してみてください、事前にありがとう:

In [46]: x 
Out[46]: 
        0 1 
0 2017-01-01 01:01:00 5 
1 2017-01-01 00:02:00 10 
2 2017-01-01 00:03:00 20 
3 2017-01-01 00:04:00 30 

In [47]: x.groupby(x[0].dt.minute)[1].apply(list) 
Out[47]: 
0 
1  [5] 
2 [10] 
3 [20] 
4 [30] 
Name: 1, dtype: object 

In [48]: x.groupby(x[0].dt.hour)[1].apply(list) 
Out[48]: 
0 
0 [10, 20, 30] 
1    [5] 
Name: 1, dtype: object