Dict to dict to dict to DataFrame [英] Dict of dicts of dicts to DataFrame
本文介绍了Dict to dict to dict to DataFrame的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想将JSON数据存储在Python Pandas DataFrame中
我的JSON数据是像这样的类似数据的字母[/ p>
d = {
col1:{
row1:{
data1:0.87
data2:标题col1,
data3:14.4878,
data4:标题row1
},
row2 :{
data1:15352.3,
data2:标题col1,
data3:14.9561,
data4:标题row2
},
row3:{
data1:0,
data2:标题col1,
data3 16.8293,
data4:标题row3
}
},
col2:{
row1:{
data1 :0.87,
data2:标题col2,
data3:24.4878,
data4:标题row1
},
row2:{
data1:15352.3,
data2:标题col2,
data3:24.9561,
data4:标题row2
},
row3:{
data1:0,
data2:标题col2,
data3 26.8293,
data4:Title row3
}
}
}
我这样做是将数据放入DataFrame中
import pandas as pd
df = pd.DataFrame(d)
我得到这个
在[1]中:df
输出[1]:
col1 col2
row1 {'data4':'标题col1' ,'data1':'0.87','data3':{'data4':'标题col1','data1':'0.87','data3':
row2 {'data4' 'data1':'15352.3','data''''''''col2','data1':'15352.3','data
row3 {'data4' 0','data3':'1 {'data4':'标题col3','data1':'0','data3':'2
我的问题是我的DataFrame包含dicts而不是值。
$ b $我想知道如何使用Pandas DataFrame管理多维数据(超过2维... 3维度)。
DataFrame中的每个dict都有相同的键。
解决方案
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标题col1标题col2
row2标题col1标题col2
row3标题col1标题col2
data3 row1 14.4878 24.4878
row2 14.9561 24.9561
row3 16.8293 26.8293
data4 row1标题row1标题row1
row2标题row2标题row2
row3标题row3标题row3
如果不想使用面板:
pd.concat(map(pd.DataFrame,d.itervalues()),keys = d.keys())。stack()。 0)
I'd like to store JSON data in a Python Pandas DataFrame
my JSON data is a dict of dicts of dicts like this
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"
}
}
}
I did this to put my data in a DataFrame
import pandas as pd
df=pd.DataFrame(d)
I get this
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
My problem is that my DataFrame contains dicts instead of values.
I wonder how I can manage multidimensionnal data (more than 2 dimensions... 3 dimensions here) with a Pandas DataFrame.
Each dict inside DataFrame have the same keys.
解决方案
df = pd.Panel.from_dict(d).to_frame()
output:
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
If you don't want use Panel:
pd.concat(map(pd.DataFrame, d.itervalues()), keys=d.keys()).stack().unstack(0)
这篇关于Dict to dict to dict to DataFrame的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文