2017-02-07 83 views
1

我想從pandas date_range獲得嵌套字典。字典的鍵應該是日期和值,所選範圍中的所有值的列表。例如:熊貓date_range嵌套json

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] 

])

,我想是這樣的:

一分:

{ 
     '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] 
} 

是大數據集,所以我想避免循環,我想直接在熊貓/ 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