【问题标题】:Reading a dictionary from within a dictionary从字典中读取字典
【发布时间】:2018-08-27 08:03:57
【问题描述】:

我有一个 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 为空时,我想将另一列与普通文本列一起添加到仅包含此信息的数据框中。

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

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'” 看来我是在正确的轨道上吗?

【问题讨论】:

    标签: python json pandas dictionary dataframe


    【解决方案1】:

    我建议像这样扁平化字典:

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

    【讨论】:

    • 您能否详细介绍一下我将如何以这种方式实现它?对不起,我是初学者。
    【解决方案2】:

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

    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']
    

    然后我可以使用每条推文的整个文本来处理数据。

    【讨论】:

      猜你喜欢
      • 2014-02-21
      • 1970-01-01
      • 1970-01-01
      • 2023-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-19
      • 2021-08-20
      相关资源
      最近更新 更多