我正在尝试创建一个函数来操作2列之间的基本操作。
所以我定义了一些lambda函数来应用于数据帧
addi=lambda x: np.round(x.sum(),2)
subt=lambda x: np.round(np.subtract.reduce(x.values),2)
prod=lambda x: np.round(x.prod(),2)
divi=lambda x: np.round(np.divide.reduce(x.values),2)
在df中,使用操作结果创建新列。实施例
co = self.df.columns[cn]#columns names
df[new_name] = self.df.loc[:, co].apply(subt,axis=1)
有GUI可以选择操作
问题是纳米值不会被滤除为减法和除法,这可能会导致纳米值。
我试图通过
对其进行修改subt=lambda x: np.round(np.subtract.reduce(np.ma.masked_array(x.values,mask=[np.isnan(x.values)])),2)
但是我收到了这个错误
AttributeError: ("'numpy.float64' object has no attribute '_mask'", u'occurred at index 2010-01-27 15:50:00')