Как получить результат value_counts() Pandas Python в виде списка списков?

Рейтинг: 0Ответов: 1Опубликовано: 13.04.2023

Результат value_counts() пакую в JSON, он выходит в таком виде

s = pd.Series([3, 1, 5, 3, 9, 4])
    jsn = s.value_counts(bins=3).to_json()
    print(jsn)

{"(0.991, 3.667]":3,"(3.667, 6.333]":2,"(6.333, 9.0]":1}

Но мне нужен JSON списка списков в таком виде

[ [0.991, 3.667, 3], [3.667, 6.333, 2], [6.333, 9.0, 1] ]

Как правильно упаковать в такой вид из объекта результата value_counts(), до преобразования в JSON?

Ответы

▲ 3Принят

Преобразуем Series во фрейм (индекс фрейма - IntervalIndex вида (0.991, 3.667]). Методом .apply()перебираем фрейм построчно, формируя новый Series, содержащий списки, составленные из значений свойств left и right каждого объекта IntervalIndex и значения из столбца count. Потом конвертируем этот Series в json в виде 'records'.

s = pd.Series([3, 1, 5, 3, 9, 4])
s = s.value_counts(bins=3)
out = s.to_frame().apply(lambda x: [x.name.left, x.name.right, x['count']], axis=1).to_json(orient='records')
print(out)
[[0.991,3.667,3],[3.667,6.333,2],[6.333,9.0,1]]