Я вложил данные из ряда документов, которые я хотел бы поместить в один кадр данных Pandas (только с определенными свойствами).Как только у меня появился курсор, я попытался перебрать документы и получить то, что мне нужно.
all_df_real= []
for doc in cursor_real:
single_real_df = pd.DataFrame(doc['data']['prices'])
all_df_real.append(single_real_df)
return all_df_real
В идеале я хотел создать один большой массив данных со всеми данными и ценами, чтобы я мог затем объединить его вдругой фрейм данных, у которого есть строки, в которых отсутствуют значения, которые будут взяты из фрейма all_df_real
.В результате я получаю список, потому что я создал пустой массив для добавления single_real_df
к.
Может ли кто-нибудь помочь мне выяснить, как создать фрейм данных из нескольких документов (которые я сгруппировал на основе временного диапазона) и только получить вложенную информацию?
Сначала я запросил базу данных, используяfind_one
, но возникли проблемы из-за необходимого диапазона дат документов.Или я ошибаюсь, создавая один кадр данных на основе документов из моего курсора и пытаясь создать один большой кадр данных из этого ...?
вспомогательная информация Вот как выглядит один из моих документов
{"_id" : ObjectId("1"),
"modelRun" : ISODate("2016-11-23T13:04:00.000+0000"),
"createdDateTime" : ISODate("2016-11-23T13:30:04.408+0000"),
"Type" : "r",
"data" : {
"prices" : [
{
"timeStamp" : ISODate("2016-11-23T14:00:00.000+0000"),
"value" : 58.48
},
{
"timeStamp" : ISODate("2016-11-23T15:00:00.000+0000"),
"value" : 55.01
},
{
"timeStamp" : ISODate("2016-11-23T16:00:00.000+0000"),
"value" : 62.0
},
{
"timeStamp" : ISODate("2016-11-23T17:00:00.000+0000"),
"value" : 52.92
} #..etc..
]
}
}
Вот как я схватил курсор
def grab_real_cursor(self, model_dt_till):
query_real = {'Type': 'r', 'modelRun': {"$gte": model_dt_till, "$lte": model_dt_till + pd.Timedelta(days=1)}}
cursor = self._collection.find(query_real)
return cursor
ОБНОВЛЕНИЕ Я попытался создать пустой фрейм данных только симена столбцов, но теперь вместо получения списка всех данных, как раньше:
[ timeStamp value
0 2016-11-23 13:00:00 54.98
1 2016-11-23 14:00:00 58.48
2 2016-11-23 15:00:00 55.01
3 2016-11-23 16:00:00 62.00
#.. etc,
, timeStamp value
0 2016-11-23 14:00:00 58.48
1 2016-11-23 15:00:00 55.01
2 2016-11-23 16:00:00 62.00
3 2016-11-23 17:00:00 52.92
]
all_df_real= pd.DataFrame(columns=['timeStamp', 'value'])
Я знаю, получить пустой фрейм данных
Empty DataFrame
Columns: [timeStamp, value]
Index: []