Вопрос:
Это мой фрейм данных df полученный после некоторой предварительной обработки:
name type range time number 0 XXXX 11111 1-120 [1-120, 261.05] [1-120, 23229] 1 XXXX 11111 121-240 [121-240, 277.79] [121-240, 6382] 2 XXXX 11111 241-360 [241-360, 269.64] [241-360, 2769] 3 XXXX 11111 361-480 [361-480, 279.09] [361-480, 1331]
Я хочу преобразовать его в следующую строку json:
[{«name»:»XXXX»,»type»:11111,»time»:[[«1-120»,261.05],[«121-240»,277.79],[«241-360»,269.64],[«361-480″,279.09]],»number»:[[«1-120»,23229],[«121-240»,6382],[«241-360»,2769],[«361-480»,1331]]
Если я так делаю, я получаю ошибку ValueError: No axis named «type» for object type <class ‘pandas.core.frame.DataFrame’>:
jsonresult = df.groupby(‘name’,’type’)[‘time’,’number’].agg(lambda x : x.tolist()).reset_index().to_json(orient=’records’) jsonresult
Он работает только, если я делаю df.groupby(‘name’) или df.groupby(‘type’).
Лучший ответ:
Вы можете использовать convert to tuple вместо list:
jsonresult = df.groupby([‘name’,’type’])[‘time’,’number’] .agg(lambda x: tuple(x)).reset_index().to_json(orient=’records’) print (jsonresult) [{«name»:»XXXX», «type»:11111, «time»:[[-119,261.05],[-119,277.79],[-119,269.64],[-119,279.09]], «number»:[[-119,23229],[-119,6382],[-119,2769],[-119,1331]]}]