KeyError возникает при открытии файла JSON txt и его установке в DataFrame - PullRequest
0 голосов
/ 07 мая 2020

У меня был код, который дал мне пустой DataFrame без сохраненных твитов. Я попытался отладить его, поместив print(line) в строку for в json file: и json_data = json.loads(line). Это привело к KeyError. Как мне это исправить? Спасибо.

list_df = list()
# read the .txt file, line by line, and append the json data in each line to the list
with open('tweet_json.txt', 'r') as json_file:
    for line in json_file:
        print(line)
        json_data = json.loads(line)
        print(line)
        tweet_id = json_data['tweet_id']
        fvrt_count = json_data['favorite_count']
        rtwt_count = json_data['retweet_count']
        list_df.append({'tweet_id': tweet_id,
                        'favorite_count': fvrt_count,
                        'retweet_count': rtwt_count})

# create a pandas DataFrame using the list
df = pd.DataFrame(list_df, columns = ['tweet_id', 'favorite_count', 'retweet_count'])
df.head()

1 Ответ

0 голосов
/ 10 мая 2020

В вашем комментарии говорится, что вы пытаетесь сохранить в файл, но в вашем коде написано, что вы пытаетесь читать из файла. Вот примеры того, как сделать и то, и другое:

Запись на JSON

import json
import pandas as pd

content = {  # This just dummy data, in the form of a dictionary
    "tweet1": {
        "id": 1,
        "msg": "Yay, first!"
    },
    "tweet2": {
        "id": 2,
        "msg": "I'm always second :("
    }
}
# Write it to a file called "tweet_json.txt" in JSON
with open("tweet_json.txt", "w") as json_file:
    json.dump(content, json_file, indent=4)  # indent=4 is optional, it makes it easier to read

Обратите внимание на w (как в w обряд) в open("tweet_json.txt", "w") . Вы используете r (как в r ead), что не дает вам разрешения на запись. Также обратите внимание на использование json.dump() вместо json.load(). Затем мы получаем файл, который выглядит следующим образом:

$ cat tweet_json.txt
{
    "tweet1": {
        "id": 1,
        "msg": "Yay, first!"
    },
    "tweet2": {
        "id": 2,
        "msg": "I'm always second :("
    }
}

Чтение из JSON

Давайте прочитаем файл, который мы только что написали, используя pandas read_json():

import pandas as pd

df = pd.read_json("tweet_json.txt")
print(df)

Результат выглядит так:

>>> df
          tweet1                tweet2
id             1                     2
msg  Yay, first!  I'm always second :(
...