在Python中,如何使用包含多级词典的列表创建数据框?

时间:2015-09-15 15:53:50

标签: python dictionary pandas dataframe

我第一次使用Twython库。它给了我一个对象'数据'这是类型字典。这本字典的字段中有[' user'],这是一个子字典。

我创建了这个词典的列表:

tweets=[]
  #Given an object data
  ...some kind of loop....
  tweets.append(data)

有了这个,我就把它转换成了数据框:

output = pd.DataFrame(tweets)

适用于第一级词典,但对于第二级词典,它将所有词典转换为字符串。

理想情况下,我希望能够做的是:

output['user']['screen_name'][1]

而不是

user_info = ast.literal_eval(output['user'][1]))
print user_info['screen_name']

并本地访问数据。目前,我必须使用像ast这样的东西,首先逐行将它转换为另一个字典。有没有更有效的方法呢?

1 个答案:

答案 0 :(得分:0)

我有一个可能的解决方案。我还没有尝试过我的问题的完整数据样本,但我认为这可能有用:

假设我们有两个DataFrame对象:

data_one
data_two

我们可以像这样操纵它:

data_one['index']=data_one.index
data_two['index']=data_two.index

这为'index'创建了一个新的字典标签。 请注意,这是大量假设行符合您的要求。

data_three = pd.merge(data_one,data_two)

由于其他原因,我尚未对其进行全面测试,但对于我的测试用例,它似乎正在给出正确的行为。我确信有一种更顺畅的方式可以做到这一点。有人会发布一个单行,但如果你在2020年读到这个,这是唯一的答案,有一种方法可以做到!