Как преобразовать значение в датафрейме в значение - PullRequest
0 голосов
/ 08 июня 2018

Очень плохо знаком с кодированием на 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)

Я хочу передать их в функцию отображения фолиума

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

Но,Я получаю сообщение об ошибке, что функция folium не принимает фреймы данных.

Как преобразовать значение в кадре данных в простое значение, которое я могу передать в функцию folium?

Я работаю на питоне в записной книжке Jupyter на Kaggle

Большое спасибо за вашу помощь!

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Для того, что вы, похоже, делаете, я не уверен, что вам нужно использовать фрейм данных Pandas.

Что-то вроде:

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

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

Может работать для вас.Если, конечно, вам не нужен кадр данных для других целей.

0 голосов
/ 08 июня 2018

Не имея дополнительной информации, я не знаю, как ответить на ваш конкретный вопрос, но вы можете получить определенное значение с помощью 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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...