экспоненты с отрицательными целыми переменными в python [duplicate]

Имена столбцов (которые являются строками) не могут быть нарезаны так, как вы пытались.

Здесь у вас есть несколько вариантов. Если вы знаете из контекста, какие переменные вы хотите вырезать, вы можете просто вернуть представление только этих столбцов, передав список в синтаксис __getitem__ ([]].

df1 = df[['a','b']]

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

df1 = df.iloc[:,0:2] # Remember that Python does not slice inclusive of the ending index.

Кроме того, вы должны ознакомиться с идеей представления объекта Pandas против копии этого объекта. Первый из вышеперечисленных методов вернет новую копию в память желаемого субобъекта (нужные фрагменты).

Иногда, однако, в Pandas существуют соглашения об индексировании, которые не делают этого и вместо этого дают вам новую переменную, которая относится только к той же части памяти, что и субобъект или фрагмент исходного объекта , Это произойдет со вторым способом индексирования, поэтому вы можете изменить его с помощью функции copy(), чтобы получить обычную копию. Когда это происходит, изменение того, что вы думаете, нарезанный объект, может иногда изменять исходный объект. Всегда хорошо смотреть на это.

df1 = df.iloc[0,0:2].copy() # To avoid the case where changing df1 also changes df
13
задан Maxime Lorant 20 May 2014 в 13:09
поделиться

4 ответа

Согласно docs , ** имеет более высокий приоритет, чем -, поэтому ваш код эквивалентен -(2 ** 2). Чтобы получить желаемый результат, вы можете поместить -2 в круглые скобки

>>> (-2) ** 2
4

или использовать встроенную функцию pow

>>> pow(-2, 2)
4

или math.pow (возвращающее значение float)

>>> import math
>>> math.pow(-2, 2)
4.0
23
ответ дан vaultah 25 August 2018 в 23:47
поделиться

вы также можете использовать математическую библиотеку ...

math.pow(-2,2) --> 4
-math.pow(2,2) --> -4
math.pow(4,0.5) --> 2
1
ответ дан angel 25 August 2018 в 23:47
поделиться

У Python есть проблема и не видит -2 как число. Это, кажется, по дизайну, как указано в документах.

-2 интерпретируется как - (2) {унарный минус до положительного числа 2}

Это обычно не задайте проблему, но в -a ** 2 ** имеет более высокий приоритет как - и, следовательно, с - интерпретируется как унарный оператор вместо части числа -2 ** 2, оценивает -2 вместо 2.

-1
ответ дан Jaco 25 August 2018 в 23:47
поделиться

Операция ** выполняется до минуса. Чтобы получить ожидаемые результаты, вы должны сделать

print ((-2) ** 2)

Из документации :

Таким образом, в несравненной последовательности мощности и унарной операторы, операторы оцениваются справа налево (это не ограничивает порядок оценки для операндов): -1**2 приводит к -1.

Полная деталь приоритет операторов также доступен в документации. Вы можете видеть, что последняя строка - (expr), которая заставляет expr оцениваться перед использованием, поэтому результат (-2) ** 2 = 4

5
ответ дан Maxime Lorant 25 August 2018 в 23:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: