我一直在设法将数据加载到Pandas中的几种不同方法。如果有人对这些例外有任何建议,将不胜感激!在尝试使用不同方法的某些示例中,文件名在tweet_json.txt和tweet_json.json之间更改。
with open('tweet_json.json', 'r') as f:
data = json.load(f)
df_3 = pd.DataFrame(data)
结果:JSONDecodeError: Extra data: line 2 column 1 (char 3974)
df_3 = pd.read_json('tweet_json.json', lines = True)
结果:ValueError: Unexpected character found when decoding object value
with open('tweet_json.txt') as file:
status = []
for line in file:
data = json.loads(line)
df_3 = pd.Dataframe(data)
结果:JSONDecodeError: Expecting ',' delimiter: line 1 column 1626 (char 1625)
我唯一获得远程成功的唯一方法是使用json.dumps(),但这只是将其加载到没有任何解析的单列数据框中,而且json看起来像一个多级字典,我不知道如何去分离它:
data = []
with open('tweet_json.json') as f:
for line in f:
data.append(json.dumps(line))
df_3 = pd.DataFrame(data)
答案 0 :(得分:1)
您可以使用json_normalize或read_json将json文件读入数据框。
如果您具有嵌套的json结构,则还可以使用from_records函数
答案 1 :(得分:0)
这就是我解决问题的方法。我没有定义要导入和使用地图的列。我仍然不知道如何将整个JSON导入df,但这确实满足了我的需要。
tweets_data = []
tweet_file = open('tweet_json.txt', "r")
for line in tweet_file:
try:
tweet = json.loads(line)
tweets_data.append(tweet)
except:
continue
tweet_file.close()
tweet_info = pd.DataFrame()
tweet_info['id'] = list(map(lambda tweet: tweet['id'], tweets_data))
tweet_info['retweet_count'] = list(map(lambda tweet: tweet['retweet_count'], tweets_data))
tweet_info['favorite_count'] = list(map(lambda tweet: tweet['favorite_count'], tweets_data))