Найти - Пользователи
Полная версия: вычисления в модуле pandas
Начало » Python для новичков » вычисления в модуле pandas
1
negra
Народ
Помогите разобраться с созданием вычисляемых столбцов в модуле 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


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

JOHN_16
negra
TypeError: string indices must be integers
Индексы строк должны быть целочисленными значениями.
В том коде что вы представили не указано что такое за переменная df, row - если это строка, то ошибка в ней. Иначе где то еще, но с той же сутью.
shaptmos
df['coord'] = val.apply(lambda row: g(row['x']))
а что у вас за строки в квадратных скобках? кавычками же строки обозначаются?
negra
Да извинияюсь забыла забрать из кода две строчки. просто все делаю пока в 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)
Ну то что Индексы строк должны быть целочисленными значениями это я поняла из “ругательства” только вот вся проблема в этом и заключается для меня что я не представляю пока как это исправить.
А в квадратных скобках насколько я поняла обозначаются названия столбцов со строками которых мы работаем.
Это мой первый скрипт на питоне так что все ново и непонятно
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB