Диктат диктов в DataFrame
Я хотел бы хранить данные JSON в Python Pandas DataFrame
мои данные JSON - это диктофон dicts, подобный этому
d = {
"col1": {
"row1": {
"data1": "0.87",
"data2": "Title col1",
"data3": "14.4878",
"data4": "Title row1"
},
"row2": {
"data1": "15352.3",
"data2": "Title col1",
"data3": "14.9561",
"data4": "Title row2"
},
"row3": {
"data1": "0",
"data2": "Title col1",
"data3": "16.8293",
"data4": "Title row3"
}
},
"col2": {
"row1": {
"data1": "0.87",
"data2": "Title col2",
"data3": "24.4878",
"data4": "Title row1"
},
"row2": {
"data1": "15352.3",
"data2": "Title col2",
"data3": "24.9561",
"data4": "Title row2"
},
"row3": {
"data1": "0",
"data2": "Title col2",
"data3": "26.8293",
"data4": "Title row3"
}
}
}
Я сделал это, чтобы поместить свои данные в DataFrame
import pandas as pd
df=pd.DataFrame(d)
Я получаю это
In [1]: df
Out[1]:
col1 col2
row1 {'data4': 'Title col1', 'data1': '0.87', 'data3': {'data4': 'Title col1', 'data1': '0.87', 'data3':
row2 {'data4': 'Title col2', 'data1': '15352.3', 'data {'data4': 'Title col2', 'data1': '15352.3', 'data
row3 {'data4': 'Title col3', 'data1': '0', 'data3': '1 {'data4': 'Title col3', 'data1': '0', 'data3': '2
Моя проблема в том, что мой DataFrame содержит dicts вместо значений.
Интересно, как я могу управлять многомерными данными (более двух измерений... 3 размера здесь) с Pandas DataFrame.
Каждый dict внутри DataFrame имеет одинаковые ключи.
Ответы
Ответ 1
df = pd.Panel.from_dict(d).to_frame()
выход:
col1 col2
major minor
data1 row1 0.87 0.87
row2 15352.3 15352.3
row3 0 0
data2 row1 Title col1 Title col2
row2 Title col1 Title col2
row3 Title col1 Title col2
data3 row1 14.4878 24.4878
row2 14.9561 24.9561
row3 16.8293 26.8293
data4 row1 Title row1 Title row1
row2 Title row2 Title row2
row3 Title row3 Title row3
Если вы не хотите использовать Panel:
pd.concat(map(pd.DataFrame, d.itervalues()), keys=d.keys()).stack().unstack(0)