从字典中读取字典

时间:2018-03-18 18:34:02

标签: python json pandas dictionary dataframe

我有一个用于推文数据的json文件。我想看的数据是推文的文字。由于某种原因,一些推文太长,无法放入字典的正常文本部分。

似乎在另一个字典中有一本字典,我无法弄清楚如何很好地访问它。

基本上,我最终想要的是一列数据框,其中包含每条推文的所有文本。以下是包含问题推文的小数据样本的link

这是我到目前为止的代码:

import json
import pandas as pd
tweets = []
#This writes the json file so that I can work with it.  This part works correctly.
with open("filelocation.txt") as source
    for line in source:
        if line.strip():
            tweets.append(json.loads(line))
print(len(tweets)
df = pd.DataFrame.from_dict(tweets)
df.info()

查看信息时,您会看到有一个名为extended_tweet的列,它只包含两个示例推文中的一个。在这一列中,似乎有另一个字典,其中一个键是full_text。

我想在full_text为null时向数据框中添加另一列,该列只包含此信息以及普通文本列。

我的第一个想法是尝试使用以下方法再次将数据帧的特定列作为字典读取:

d = pd.DataFrame.from_dict(tweets['extended_tweet]['full_text])

但这不起作用。我真的不明白为什么那不起作用,因为这是我第一次读取数据的方式。

我的猜测是我无法查看具体名称,因为我要回到列表中,它必须全部读取或不读取。它给我的错误说" KeyError:' full_text' "

我也尝试使用此website提供的建议。但无论如何,这给了我一个None value

提前致谢!

我试图做@Dan D.建议的,然而,这仍然给了我错误。但它给了我尝试这个想法:     鸣叫[0] [' extended_tweet'] [' full_text'] 这有效,并为我提供了我正在寻找的价值。但我需要贯彻整个事情。所以我尝试了这个:     df [' full'] = [tweet [i] [' extended_tweet'] [' full_text'] for i in range(len(tweet))

这给了我"关键错误:' extended_tweet' " 看起来我走在正确的轨道上了吗?

2 个答案:

答案 0 :(得分:2)

我建议将这样的词典弄清楚:

tweet = json.loads(line)
tweet['full_text'] = tweet['extended_tweet']['full_text']
tweets.append(tweet)

答案 1 :(得分:0)

我不知道之前建议的答案是否有效。我从来没有成功过。但我确实找到了对我有用的其他东西 我真正需要的是一种显示推文全文的方法。我首先从上面发布的内容中加载了json的推文。然后我注意到在数据文件中有一些叫做截断的东西。如果此值为true,则推文缩短,完整的推文放在

tweet[i]['extended_tweet]['full_text]

为了访问它,我使用了这个:

tweet_list = []
for i in range(len(tweets)):
    if tweets[i]['truncated'] == 'True':
        tweet_list.append(tweets[i]['extended_tweet']['full_text']
    else:
        tweet_list.append(tweets[i]['text']

然后我可以使用每条推文中的whol文本处理数据。