Member 14991075 Ответов: 1

Итерация, расчет с помощью панд


Я новичок в Python и хотел бы кое - что спросить.

Мой код читает csv-файл. Я хочу использовать одну колонку. Я хочу использовать уравнение, которое вычисляет, в зависимости от значения столбца, который я хочу использовать, несколько значений. Я использую команды для и если.


но командное окно выдает мне ошибку:

TypeError: объект 'Series' не вызывается

Не могли бы вы мне помочь?

Что я уже пробовал:

мой код:
import math
import pandas as pd
import matplotlib as mpl
import numpy as np

dfArxika = pd.read_csv('AIALL.csv', usecols=[0,1,2,3,4,5,6,7,8,9,10], header=None, index_col=False)
print(dfArxika.columns)

A=dfArxika[9]

for i in range(len(A)):
    if (A[i] >= 4.8 and A[i] < 66):
        IA[i]= (2.2*(math.log10(A[i]/66))+5.5)
    elif (A[i] >= 66):
        IA[i]= 3.66*(math.log10(A[i]/66)+5.5)
    else:
        IA[i]=(2.2*(math.log10(A[i]/66))+5.5)

1 Ответов

Рейтинг:
12

Richard MacCutchan

Значения индексов в списках должны быть заключены в квадратные скобки [ и ], а не скобки.

    if (A[i] >= 4.8 and A[i] < 66):
# etc.

Пожалуйста, изучайте Учебник по Python — документация по Python 3.7.9[^] для правильного синтаксиса.


Member 14991075

Извините , я пробовал ваше решение, но командное окно показывает мне:
Ошибку TypeError: не удается сделать ярлык индексации на &ЛТ;панд класса.ядро.индексы.диапазон.rangeindex'=""&ГТ; с этих индексаторов [122.59] из &ЛТ;класс 'поплавок'=""&ГТ;

Richard MacCutchan

За утверждение ошибочно (что я пропустил). Вы пытаетесь использовать i в качестве индекса для каждого элемента в так и должно быть:

for i in range(len(A)):

В качестве альтернативы если вы оставите оператор for как есть то вам это не нужно A[i] поскольку он настроен на итерацию по каждому элементу в списке, поэтому вы просто заменяете каждое вхождение A[i] с простотой i Хотя я настоятельно рекомендую вам прекратить использовать одиночные символы для ваших переменных и использовать осмысленные имена.

Кроме того, как я уже предлагал выше, пройдите и поработайте с учебниками по Python, чтобы получить правильное понимание языка и его синтаксиса.

Member 14991075

хорошо, я попробовал это сделать, но это показывает мне:
NameError: имя " IA " не определено (IA-это уравнение, которое я показываю вам в своем кодовом решении выше)

Richard MacCutchan

К какой строке относится это сообщение? Пожалуйста, используйте Улучшить вопрос ссылка выше, и добавьте детали к вашему первоначальному вопросу.

Member 14991075

Это сообщение относится к строке
IA=3,66*log10(A(i)/66)+5,5 (строка 14)

Richard MacCutchan

Пожалуйста, сделайте то, что я попросил, и обновите свой вопрос с фактическим кодом и сообщением об ошибке.

Member 14991075

Я просто сделал это

Richard MacCutchan

IA еще не существует, поэтому следующая строка не имеет смысла.

        IA[i]= (2.2*(math.log10(A[i]/66))+5.5)

Вы не можете использовать индексный адрес для переменной, которая еще не существует. Вы также не можете выучить язык программирования из вопросов на форумах, подобных этому. Сделайте все легко для себя, перейдите на страницу учебников, которую я вам дал, и изучите язык в надлежащих деталях.

Member 14991075

Я знаю, но я читаю так много, что запутался. Не могли бы вы сказать мне, что нужно сделать, чтобы закончить мой код?

Richard MacCutchan

Да, делай то, что я тебе предлагаю. Вы можете проработать основы в учебнике (разделы 2-6) за несколько часов, так что это хорошо потраченное время. Он дает четкие сведения о том, как создавать и управлять различными типами переменных, отдельными элементами, списками, словарями, кортежами и т. д. Полное понимание этого является наиболее важным для того, что вы пытаетесь сделать.