簡體   English   中英

Pandas date_range到嵌套的json

[英]Pandas date_range to nested json

我想從pandas date_range獲得一個嵌套的dict。 字典的鍵應該是日期和值,是所選范圍內所有值的列表。 例如:

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

對於大型數據集,所以我想避免循環,我想直接在pandas / numpy中這樣做。

有誰能夠幫助我。

先感謝您

嘗試這個:

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

不知道箭頭是什么,但我會嘗試將所有內容保存在pandas / 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]}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM