Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 20, 2015 05:21:19

negra
Зарегистрирован: 2015-12-20
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

вычисления в модуле pandas

Народ
Помогите разобраться с созданием вычисляемых столбцов в модуле pandas python 3.5. Изначально надо на основе столбца с населенным пунктом получить столбец с его координатами. В данном случае пока одной.

from pandas import *
import geocoder
import pandas as pd
import requests
ifl=pd.read_json('http://data.egov.kz/api/v2/pollut_level')
ifl.dtypes
val = df['settlement']
def g(x):
    
    crd = geocoder.google(x, 'Kazakhstan')
    g = crd.latlng[0]
    return g
df['coord'] = val.apply(lambda row: g(row['x']))
Почему то выдает ошибку с которой я не могу разобраться
TypeError Traceback (most recent call last)
<ipython-input-79-884d1bbd11a0> in <module>()
11 g = crd.latlng
12 return g
—> 13 df = val.apply(lambda row: g(row))
14

C:\Anaconda3\lib\site-packages\pandas\core\series.py in apply(self, func, convert_dtype, args, **kwds)
2167 values = lib.map_infer(values, lib.Timestamp)
2168
-> 2169 mapped = lib.map_infer(values, f, convert=convert_dtype)
2170 if len(mapped) and isinstance(mapped, Series):
2171 from pandas.core.frame import DataFrame

pandas\src\inference.pyx in pandas.lib.map_infer (pandas\lib.c:62578)()

<ipython-input-79-884d1bbd11a0> in <lambda>(row)
11 g = crd.latlng
12 return g
—> 13 df = val.apply(lambda row: g(row))
14

TypeError: string indices must be integers


Заранее спасибо

Отредактировано negra (Дек. 20, 2015 05:28:10)

Офлайн

#2 Дек. 20, 2015 06:30:58

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

вычисления в модуле pandas

negra
TypeError: string indices must be integers
Индексы строк должны быть целочисленными значениями.
В том коде что вы представили не указано что такое за переменная df, row - если это строка, то ошибка в ней. Иначе где то еще, но с той же сутью.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Дек. 20, 2015 06:42:52

shaptmos
Зарегистрирован: 2015-12-12
Сообщения: 27
Репутация: +  4  -
Профиль   Отправить e-mail  

вычисления в модуле pandas

df['coord'] = val.apply(lambda row: g(row['x']))
а что у вас за строки в квадратных скобках? кавычками же строки обозначаются?

Отредактировано shaptmos (Дек. 20, 2015 06:45:01)

Офлайн

#4 Дек. 20, 2015 14:24:42

negra
Зарегистрирован: 2015-12-20
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

вычисления в модуле pandas

Да извинияюсь забыла забрать из кода две строчки. просто все делаю пока в Jupiter а там все разрозненно.

from pandas import *
import geocoder
import pandas as pd
import requests
ifl=pd.read_json('http://data.egov.kz/api/v2/pollut_level')
ifl.dtypes
df = pd.DataFrame(ifl)
df
val = df['settlement']
def g(x):
    
    crd = geocoder.google(x, 'Kazakhstan')
    g = crd.latlng[0]
    return g
df['coord'] = val.apply(lambda row: g(row['x']))
последнюю строку взяла из примера что нарыла в инете
в оригинале он выглядел так
def valuation_formula(x, y):
    return x * y * 0.5
df['price'] = df.apply(lambda row: valuation_formula(row['x'], row['y']), axis=1)
Ну то что Индексы строк должны быть целочисленными значениями это я поняла из “ругательства” только вот вся проблема в этом и заключается для меня что я не представляю пока как это исправить.
А в квадратных скобках насколько я поняла обозначаются названия столбцов со строками которых мы работаем.
Это мой первый скрипт на питоне так что все ново и непонятно

Отредактировано negra (Дек. 20, 2015 14:27:06)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version