0

我目前正在做一个项目,想法是从标签中提取推文(启用地理)并打印地图(使用 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')

你们能帮我打印推文的标记和文本细节吗?提前致谢。

PS:我目前有: 欧洲地图

4

2 回答 2

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]}"

于 2017-10-04T09:20:25.290 回答
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')

这应该可以工作,或者非常接近工作,但是我没有合适的计算机来进行测试。

于 2017-10-04T09:47:52.100 回答