如何用 pandas 对 Excel 文件中的列进行平方?

How do I square a column from an Excel file with pandas?

我使用以下方法将 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'

我是 python 的新手。有什么方法可以轻松解决这个问题吗?

您可以像这样使用 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 的事实意味着可能某些值不直接是数字,但可能有单位或别的。