我的字典是
{'id': '6576_926_1',
'name': 'xyz',
'm': 926,
0: {'id': '2896_926_2',
'name': 'lmn',
'm': 926},
1: {'id': '23_926_3',
'name': 'abc',
'm': 928}}
我想将其转换为数据框,例如
Id Name M
6576_926_1 Xyz 926
2896_926_2 Lmn 926
23_926_3 Abc 928
即使第一行没有索引,我也很好。大约有1.3 MN记录,因此速度非常重要。我尝试使用for循环和append语句,这需要永远的时间
答案 0 :(得分:0)
您可以使用循环将每个词典的条目转换为列表,然后使用熊猫的.from_dict转换为数据框。这是给出的示例:
>>> data = {'col_1': [3, 2, 1, 0], 'col_2': ['a', 'b', 'c', 'd']}
>>> pd.DataFrame.from_dict(data)
col_1 col_2
0 3 a
1 2 b
2 1 c
3 0 d
答案 1 :(得分:0)
使用以下方法
import pandas as pd
data = pd.Dataframe(dict)
data = data.drop(0, axis=1)
data = data.drop(1, axis=1)
您也可以尝试
import pandas as pd
del dict['id']
del dict['name']
del dict['m']
pd.DataFrame(dict)
答案 2 :(得分:0)
尝试此代码!!尽管如此,复杂度仍为O(n)
my_dict.pop('id')
my_dict.pop('name')
my_dict.pop('m')
data = [ row.values() for row in my_dict.values()]
pd.DataFrame(data=data, columns=['id','name','m'])
答案 3 :(得分:0)
正如您提到的,第一行对您来说不是必需的。所以,在这里我已经尝试过了。希望这能解决您的问题
import pandas as pd
lis = []
data = {
0: {'id': '2896_926_2', 'name': 'lmn', 'm': 926},
1: {'id': '23_926_3', 'name': 'abc', 'm': 928}
}
for key,val in data.iteritems():
lis.append(val)
d = pd.DataFrame(lis)
print d
输出-
id m name
0 2896_926_2 926 lmn
1 23_926_3 928 abc
如果您要 id 作为索引,请添加 set_index
for i,j in data.iteritems():
lis.append(j)
d = pd.DataFrame(lis)
d = d.set_index('id')
print d
输出-
m name
id
2896_926_2 926 lmn
23_926_3 928 abc
答案 4 :(得分:0)
dict = {'id': '6576_926_1',
'name': 'xyz',
'm': 926,
0: {'id': '2896_926_2',
'name': 'lmn',
'm': 926},
1: {'id': '23_926_3',
'name': 'abc',
'm': 928}}
import pandas as pd
del dict['id']
del dict['name']
del dict['m']
d = pd.DataFrame(dict).T
答案 5 :(得分:0)
import pandas as pd
data={'id': '6576_926_1','name': 'xyz','m': 926,0: {'id': '2896_926_2', 'name': 'lmn', 'm': 926},1: {'id': '23_926_3', 'name': 'abc','m': 928}}
Id=[]
Name=[]
M=[]
for k,val in data.items():
if type(val) is dict:
Id.append(val['id'])
Name.append(val['name'])
M.append(val['m'])
df = pd.DataFrame({'Name':Name,'Id':Id,'M':M}) 打印(df)