Python 将json转换为数据帧
csv文件仅显示一行,条目显示为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
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))