Как квадратировать столбец из файла Excel с пандами?

Я прочитал файл Excel в python, используя:

import pandas as pd
import numpy as np

water_consumption = pd.read_csv('Self_Data.csv')

и я пытаюсь возвести столбцы в квадрат, используя:

exponent = 2
water_consumption['x2'] = np.power(water_consumption['Consumption_(HCF)'], exponent)
water_consumption['y2'] = np.power(water_consumption['Water&Sewer_Charges'], exponent)

Я продолжаю получать ошибку:

TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'

Я довольно новичок в питоне. Есть ли способ легко исправить это?

преобразовать water_consumption['Consumption_(HCF)'] в int(water_consumption['Consumment_(HCF)']) или float(water_consumption['Consumption_(HCF)']) в зависимости от требования.

bazinga012 15.05.2022 23:47

это привело меня на правильный путь. спасибо @bazinga012

click004 16.05.2022 00:47
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
28
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете использовать lambda function следующим образом: Но это работает, если тип данных столбца не является типом объекта. за этот чек type(water_consumption['x2']) вы попробуйте:

water_consumption['x2']=water_consumption['x2'].apply(lambda x:x**2)



>>> import pandas as pd
>>> water_consumption = {"x2":[1,2,3,4],"y2":[5,6,7,8]}
>>> water_consumption=pd.DataFrame(water_consumption)
>>> water_consumption
   x2  y2
0   1   5
1   2   6
2   3   7
3   4   8
>>> water_consumption['x2']=water_consumption['x2'].apply(lambda x:x**2)
>>> water_consumption
   x2  y2
0   1   5
1   4   6
2   9   7
3  16   8
>>> 
Ответ принят как подходящий

Никогда не используйте apply-lambda для простых математических операций. это на порядки медленнее, чем при использовании прямых операций. Проблема, с которой сталкивается click004, заключается в том, что столбцы имеют формат str.

Сначала их следует преобразовать в числовое, обычно с помощью .convert_dtypes(): https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.convert_dtypes.html.

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

Другие вопросы по теме