Python 将json转换为数据帧

Python 将json转换为数据帧,python,pandas,Python,Pandas,csv文件仅显示一行,条目显示为 tweets_filename = 'fetched_tweets.json' tweets_file = open(tweets_filename, "r") tweets_data=[] df=pd.DataFrame(); for line in tweets_file: tweet = json.loads(line) tweets_data.append(tweet) df['created_at'] = map(l

csv文件仅显示一行,条目显示为

tweets_filename = 'fetched_tweets.json'
tweets_file = open(tweets_filename, "r")
tweets_data=[]
df=pd.DataFrame();
for line in tweets_file:
      tweet = json.loads(line)
      tweets_data.append(tweet)
      df['created_at'] = map(lambda tweet: time.strftime('%Y-%m-%d %H:%M:%S', time.strptime(tweet['created_at'],'%a %b %d %H:%M:%S +0000 %Y')), tweets_data)
      df['user'] = map(lambda tweet: tweet['user']['screen_name'], tweets_data)
df.to_csv('fetched_df.csv')
fetched_tweets.json
文件是使用代码创建的

                       created_at                            user
0  map object at 0x7f93cba73b00>      map object at 0x7f93cba73630>
如何从显示映射到对象的数据框打印数据,以及如何获取所有行?

您可能需要

class StdOutListener(StreamListener):    
    def on_data(self, data):    
        with open('fetched_tweets.json','a') as tf:    
            tf.write(data)    
        return True    
    def on_error(self, status):    
        print (status)

if __name__ == '__main__':    
    #This handles Twitter authetification and the connection to Twitter Streaming API
    l = StdOutListener()
    auth = OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_token, access_token_secret)
    stream = Stream(auth, l)
    stream.filter(track=['fakenews'])

由于Python 3中的生成器是
map
,您必须将其显式转换为
list
,以分配给pandas列。

请下次根据规则设置代码格式(所有代码行应以4个空格开头,这可以通过
Alt+K
完成)。为了这篇文章,我是为你做的。另外,最好提供原始数据文件的一个片段,而不是生成它的代码:我真的不能不认真地用代码重新创建这个数据文件。
for line in tweets_file:
      tweet = json.loads(line)
      tweets_data.append(tweet)

# decrease indent here, we don't want
# the following lines to be in the loop

df['created_at'] = list(map(lambda tweet: time.strftime('%Y-%m-%d %H:%M:%S', time.strptime(tweet['created_at'],'%a %b %d %H:%M:%S +0000 %Y')), tweets_data))
df['user'] = list(map(lambda tweet: tweet['user']['screen_name'], tweets_data))