如何将数据框中的值转换为值

时间:2018-06-08 20:19:25

标签: python dataframe

在python中编码很新,但我试图理解如何将数据帧中的值转换为没有该结构的简单值。我这样做是因为我从SQL中提取了一个值并将其传递给不接受数据帧的函数,但我的SQL查询结果卡在数据帧中。

以下详细信息:

我运行了两个查询来从数据表中提取第一个纬度和经度值。

nyc= bq_helper.BigQueryHelper(active_project= "bigquery-public-data", 
                                   dataset_name = "new_york")

query_lat = """
SELECT latitude from `bigquery-public-data.new_york.citibike_stations`
limit 1
"""

query_long = """
SELECT longitude from `bigquery-public-data.new_york.citibike_stations`
limit 1
"""

然后我将查询结果分配给lat和long变量

lat = nyc.query_to_pandas_safe(query_lat)
long = nyc.query_to_pandas_safe(query_long)

我想将这些传递给folium映射函数

map_hooray = folium.Map(location=[lat, long],
                    zoom_start =11)

但是,我得到一个错误,即folium函数不接受数据帧。

如何将数据框中的值转换为可以传递给folium函数的简单值?

我在Kaggle的Jupyter笔记本中使用python进行工作

非常感谢你的帮助!

2 个答案:

答案 0 :(得分:1)

对于您的目的,我不确定您是否需要使用Pandas数据帧。

类似的东西:

lat = query_lat.fetchone()
long = query_long.fetchone()

map_hooray = folium.Map(location=[lat[0], long[0]], zoom_start =11)

可能适合你。 当然,除非您需要将数据帧用于其他目的。

答案 1 :(得分:0)

没有更多信息我不确定如何回答您的具体问题,但您可以使用iloc获取特定值。

df.iloc[1,3]

但是,对于您的情况,迭代行或列并提取每行的特定值可能更有帮助,因为如果在数据帧中返回多个值,则可能会返回多个值。

df = lat.merge(long, left_index = True, right_index = True)

map_hooray = []
for key, row in df.iterrows():
    long = row['long']
    lat  = row['lat']
    map_hooray.append(folium.Map(locations = [lat, long], zoom_start = 11))
合并后

甚至更好:

df['Map'] = df.apply(lambda x: folium.Map(locations = [x['lat'], x['long']], zoom_start = 11))