从json文件读取推文到pandas DataFrame

时间:2018-01-28 16:23:32

标签: python json pandas

我尝试使用以下代码阅读以json格式保存的Twitter数据:

import json

with open(file, 'r') as f:
    line = f.readline()
    tweet = json.loads(line)
    df1 = pd.DataFrame(tweet)  

此代码只读取一条推文并且有效,但是当我尝试通过以下方式阅读所有文件时:

with open(file, 'r') as f:
    for line in f:
        tweet = json.loads(line)

我收到了一个错误:

JSONDecodeError: Expecting value: line 2 column 1 (char 1)

我发现了一些与此问题相关的主题,但仍然没有解决,因为我可以阅读特定的推文。我应该更改什么才能正确阅读此文件?

我的主要任务是查找这些推文的创建日期,我发现它使用了以下过滤器(我刚刚使用了一条在开头工作的推文):

df2 = df[["user"]]
df3 = df2.loc[['created_at']]
df3

也许有比DataFrame更好的方法来获取这些数据?

我的json文件可用here

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

您可以这样做:

import pandas as pd
#results is the JSON tweet data. 

#Define the columns you want to extract
resultFrame = pd.DataFrame(columns=["username","created_at","tweet"])
print len(results)

for i in range(len(results)):
    resultFrame.loc[i,"username"] = results[i].user.screen_name
    resultFrame.loc[i, "created_at"] = results[i].created_at
    resultFrame.loc[i, "tweet"] = results[i].text

print resultFrame.head()

答案 1 :(得分:0)

为我读取(全部)JSON文件的更简洁方式看起来像

import pandas as pd
df = pd.read_json("python.json", orient = 'records', lines = True)

然后,您可以将转换应用于df,以便从您感兴趣的列中获取数据。