У меня есть список словарей следующим образом:Проблемы с Пандой передискретизации
>>>L=[
{
"timeline": "2014-10",
"total_prescriptions": 17
},
{
"timeline": "2014-11",
"total_prescriptions": 14
},
{
"timeline": "2014-12",
"total_prescriptions": 8
},
{
"timeline": "2015-1",
"total_prescriptions": 4
},
{
"timeline": "2015-3",
"total_prescriptions": 10
},
{
"timeline": "2015-4",
"total_prescriptions": 3
}
]
Что мне нужно сделать, это заполнить отсутствующие месяцы, в этом случае фев 2015 с общим рецептом, как zero.I используется панды для него следующим образом:
>>> df = pd.DataFrame(L)
>>> df.index=pd.to_datetime(df.timeline,format='%Y-%m')
>>> df
timeline total_prescriptions
timeline
2014-10-01 2014-10 17
2014-11-01 2014-11 14
2014-12-01 2014-12 8
2015-01-01 2015-1 4
2015-03-01 2015-3 10
2015-04-01 2015-4 3
>>> df = df.resample('MS').fillna(0)
>>> df
total_prescriptions
timeline
2014-10-01 17
2014-11-01 14
2014-12-01 8
2015-01-01 4
2015-02-01 0
2015-03-01 10
2015-04-01 3
до сих пор так good..Just, что я want..Now мне нужно преобразовать этот кадр данных обратно в список dicts..This, как я это делаю:
>>> response = df.T.to_dict().values()
>>> response
[{'total_prescriptions': 0.0},
{'total_prescriptions': 17.0},
{'total_prescriptions': 10.0},
{'total_prescriptions': 14.0},
{'total_prescriptions': 4.0},
{'total_prescriptions': 8.0},
{'total_prescriptions': 3.0}]
Упорядочение потеряно, временная шкала отсутствует, а total_prescriptions становится десятичным значением из int.What происходит неправильно?
Ну * десятичное значение, потому что ваш DTYPE будет преобразован плавать из-за 'NaN' строк, введенной передискретизацией, вы можете преобразовать обратно с помощью этого:' ДФ = df.resample («MS») .fillna (0) .astype (np.int32) ', поскольку потеря упорядоченности происходит из-за того, что dict не гарантирует порядок при вызове' values', вам придется сортировать ключи и строить dict из отсортированного ключи – EdChum