我目前正在开展一个项目,其目的是从Hashtag中提取推文(启用地理位置)并打印地图(使用Folium)。在地图内部,我应该根据用户位置设置标记,当我点击标记时,我应该有推文的文本。但目前我只有地图和标记。
这是我的代码:
import pandas as pd
import folium, ast
locations = pd.read_csv('tweets.csv', usecols=[3]).dropna()
l_locations = []
for loc in locations.values:
l_locations.append(ast.literal_eval(loc[0])['coordinates'])
print_tweet_map = folium.Map(location=[48.864716, 2.349014], zoom_start=8, tiles='Mapbox Bright')
for geo in l_locations:
folium.Marker(location=geo).add_to(print_tweet_map)
print_tweet_map.save('index.html')
你们可以帮我打印推文的标记和文字细节吗? 提前谢谢。
答案 0 :(得分:0)
csv文件的某些行:
created_at,user,text,geo
2017-09-30 15:28:56,yanceustie,"RT @ChelseaFC: .@AlvaroMorata and @marcosalonso03 have been checking out the pitch ahead of kick-off..., null
2017-09-30 15:48:18,trendinaliaVN,#CHEMCI just started trending with 17632 tweets. More trends at ... #trndnl,"{'type': 'Point', 'coordinates': [21.0285, 105.8048]}"

答案 1 :(得分:0)
仔细检查read_csv
,然后使用它来检索推文文本。阅读folium文档,popup
似乎是放置每条推文文本最相关的地方。
同样,你会重复同样的事情2次。您可以将这些减少到1个迭代循环中,在地图上放置一条推文。 (想象一下,地图是您要附加的空列表)。无需过度顺序。
import pandas as pd
import folium, ast
frame = pd.read_csv('tweets.csv', usecols=[2, 3], names=['text', 'location'], header=None).dropna()
print_tweet_map = folium.Map(location=[48.864716, 2.349014], zoom_start=8, tiles='Mapbox Bright')
for index, item in frame.iterrows():
loc = item.get('location')
text = item.get('text')
geo = ast.literal_eval(loc[0])['coordinates']
folium.Marker(location=geo, popup=text) \
.add_to(print_tweet_map)
print_tweet_map.save('index.html')
这应该可以工作,或者非常接近工作,但我没有合适的计算机进行测试。