我正在尝试将一列乘以一个 float 。我这里有它的代码:
if str(cMachineName)==str("K42"):
df_temp.loc[:, "P"] *= float((105.0* 59.0*math.pi*0.95/1000)/3540)
但它给了我这个错误:
TypeError: can't multiply sequence by non-int of type 'float'.
如何解决?
最佳答案
我认为问题是一些非数字值,例如 45
作为字符串:
解决方案正在通过 astype
转换为 float
、int
:
df_temp = pd.DataFrame({'P':[1,2.5,'45']})
print (df_temp['P'].dtype)
object
df_temp["P"] = df_temp["P"].astype(float)
df_temp["P"] *= float((105.0* 59.0*math.pi*0.95/1000)/3540)
print (df_temp)
P
0 0.005223
1 0.013057
2 0.235030
另一个问题是像gh
这样的非数字数据,需要进行转换to_numeric
使用 errors='coerce'
将它们转换为 NaN
s:
df_temp = pd.DataFrame({'P':[1,2.5,'gh']})
print (df_temp['P'].dtype)
object
df_temp["P"] = pd.to_numeric(df_temp["P"], errors='coerce')
print (df_temp)
P
0 1.0
1 2.5
2 NaN
df_temp["P"] *= float((105.0* 59.0*math.pi*0.95/1000)/3540)
print (df_temp)
P
0 0.005223
1 0.013057
2 NaN
关于python - 如何将数据帧列乘以浮点常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46440291/