Помогите исправить ошибку в коде Python
Здравствуйте, помогите пожалуйста с кодом. Вот у меня есть задание :
- Определить ОДЗ для своей функции.
- Создать DataFrame с двумя столбцами - первый вещественные числа из отрезка [a,b] с шагом h (отрезок берем из ОДЗ), второй столбец - значение функции y(x) в соответствующих точках.
- Вывести DataFrame на экран.
- Добавить строку со значениями точки x = b+1 и y = y(b+1).
- Удалить первую строку.
- Удалить строки, в которых значение x < b//2.
- Сохранить файл в формате csv.
- Построить средствами Python график своей функции на выбранном отрезке.
по нему я написал код, но у меня выходит ошибка:
"TypeError: 'float' object cannot be interpreted as an integer"
import pandas as pd
import numpy as np
a, b = 3, 30
h = 1
n = (b-a)/h + 1
# 2.
df = pd.DataFrame({'x': np.linspace(a, b, n)})
df['y'] = np.log(df.x/(df.x-2))
# 3.
print(df)
# 4.
fun = lambda elem: [elem, np.log(elem/(elem-2))]
df.loc[n] = fun(b+1)
print(df)
# 5.
df.drop(index=0, inplace=True)
print(df)
# 6.
df = df[(df.x.values > b//2) | (df.x.values == b//2)]
print(df)
# 7.
df.to_csv('file.csv', index=False, delimiter=',')
В чем ошибка?
Ответы (2 шт):
Число отрезков в np.linspace(a, b, n) должно быть целое, поэтому n должно быть целое, а не дробное, сделать это проще всего используя целочисленное деление //:
n = (b-a)//h + 1
Кроме того, у метода .to_csv нет параметра delimiter, а есть параметр sep:
df.to_csv('file.csv', index=False, sep=',')
И похвально, конечно, что вы знаете, как комбинировать условия в Pandas, но он вполне понимает >=, два условия не нужны, можно обойтись одним условием. Кроме того, .values использовать не нужно, при сравнении Series с числом Pandas и так понимает, что сравнивается values, а не index:
df = df[df.x >= b//2]
P.S. Отрисовка графика делается элементарно средствами самого Pandas:
df.plot(x='x', y='y');
Похоже, в коде, связанном с методом, произошла ошибка. Метод pandas DataFrame не имеет параметра с именем . Вместо этого он использует для указания разделителя для CSV-файла.

