如何用 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
的事实意味着可能某些值不直接是数字,但可能有单位或别的。
我使用以下方法将 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
的事实意味着可能某些值不直接是数字,但可能有单位或别的。