我想从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中这样做。
任何人都可以帮助我。
提前谢谢
答案 0 :(得分: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
答案 1 :(得分:0)
不确定箭头是什么,但我会尝试将所有内容保存在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]}