将字典的字典转换为带有一行,一列元组的数据帧

时间:2016-04-21 18:22:51

标签: python dictionary pandas

我有一个名为test的词典,如下所示:

dct = {}
test = {'A': 1, '-A': 1, '-C': 1}
dct['key1'] = test

我想要一个带有一行的df,其中一列看起来像:

(A,1), (-A,1), (-C,1)

我在调用pd.DataFrame(x)但未能获得我想要的结构之前,通过键,dct创建list / tuple对象的值尝试了很多方法来iteritems()。

必须有一个简单的方法来做到这一点。

2 个答案:

答案 0 :(得分:1)

如果您想在单个列下使用dict中的多个元素,则需要将元素存储在某个容器中:

import  pandas as pd
dct = {}
test = {'A': 1, '-A': 1, '-C': 1}
test2 = {'A': 1, '-A': 1, '-C': 1}
dct['key1'] = test
dct["keys2"] = test2

print(pd.DataFrame([[d.items()] for d in dct.values()]))

哪个会给你:

                          0
0  [(A, 1), (-A, 1), (-C, 1)]
1  [(A, 1), (-A, 1), (-C, 1)]

答案 1 :(得分:1)

如果你真的想摆脱括号,你首先需要将列表转换为字符串,然后剥去头部和尾部括号:

>>> pd.DataFrame({'key1': [str([(k, v) for k, v in test.iteritems()])[1:-1]]})
                             key1
0  ('A', 1), ('-A', 1), ('-C', 1)

执行此操作后,数据显然会变得无法使用。