2016-12-30 3 views
1

Как преобразовать dataframe в json-структуру?Как преобразовать dataframe в json

df = 

name size imports 
AAA  111  [222,333] 
BBB  111  [333,444] 

Результат должен быть:

json = 
[ 
{"name":"AAA","size":111,"imports":["data.222","data.333"]}, 
{"name":"BBB","size":111,"imports":["data.33","data.444"]} 
] 

Если я использую эту команду df.reset_index().to_json(orient='records'), то я не могу настроить значения как data.333 (т.е. добавить data и поместить значение в ".."

+0

Что такое 'type (df.imports.iloc [0])'? – jezrael

+0

@jezrael: Это '' ''. – Dinosaurius

+0

Я думаю 'print (type (df.imports.iloc [0]))' и это str или список, я думаю. – jezrael

ответ

2

Вы можете. используйте apply с list comprehension для добавления текста data. к каждому значению list:

df = pd.DataFrame({'name':['AAA','BBB'], 
        'sizeB':[111,111], 
        'imports':[[222,333],[333,444]]}) 

df.imports = df.imports.apply(lambda x: ['data.'+ str(y) for y in x]) 
print (df) 
       imports name sizeB 
0 [data.222, data.333] AAA 111 
1 [data.333, data.444] BBB 111 

print (df.to_json(orient='records')) 
[{"imports":["data.222","data.333"],"name":"AAA","sizeB":111}, 
{"imports":["data.333","data.444"],"name":"BBB","sizeB":111}] 
+0

Это дает мне «импорт»: [data.222, data.333] без '" .. "' – Dinosaurius

+0

Я немного смущен - '..' не находится в желаемом выходе. Думаю, я не понимаю. Можете ли вы объяснить больше? – jezrael

+0

Я хочу сказать, что мне нужно получить «импорт»: [«data.222», «data.333»], но не «import»: [data.222, data.333] '. Извините, если я не объяснил это хорошо. – Dinosaurius

Смежные вопросы