我有一个如下所示的数据框
import pandas as pd
z = pd.DataFrame({'Unit':['%','%','%','mmol/mol','mmol/mol'],'value':[6,1,5,120,110]})
我想创建一个名为的新列new_value
,它将具有基于Unit
列的值。意思是,如果unit
是%
,我们只是保持不变。如果不是,我们应该应用下面的公式来转换它们
% = [0.09148 * value] + 2.152).
因此,我尝试了以下代码
z['new_value'] = np.where(z["Unit"]=='mmol/mol', z['value'],([0.09148*z['value']] + 2.152))
但它导致了如下所示的错误消息
TypeError: can only concatenate list (not "float") to list
我希望我的输出如下所示
[]
从第二部分(其他)中删除返回一维数组np.where
,同时更改顺序then-else
:
z['new_value'] = np.where(z["Unit"]=='mmol/mol', 0.09148*z['value'] + 2.152, z['value'])
print (z)
Unit value new_value
0 % 6 6.0000
1 % 1 1.0000
2 % 5 5.0000
3 mmol/mol 120 13.1296
4 mmol/mol 110 12.2148
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句