我试图将数据帧分成相等的样本,如果任何样本值大于0.3,则应用一些函数来计算每个样本的值,然后在结果数据帧中我要保存文件名
df=pd.DataFrame({'Value':[-0.016,-0.006,0.003,-0.011,-0.036,-0.031,-0.014,-0.006,-0.01 ,-0.009,0.004,0.001,-0.012,-0.021,-0.008,0.001,-0.011,-0.01,-0.006,0.002,0.004],'Nmae':[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]})
x=pd.DataFrame([x.values.sqrt(np.mean(df2['Value']**2)) for x in np.array_split(df2, (len(df2)/10))])
遇到此错误
AttributeError:“ numpy.ndarray”对象没有属性“ sqrt”
如果有人有其他有效的方法来完成此任务
答案 0 :(得分:0)
这是您的代码的有效版本:
res= [np.sqrt(np.mean((x.Value**2))) for x in np.array_split(df, (len(df)/10))]
使用Pandas解决此问题的另一种方法是。您定义一个新列'Split_variable',并使用它来应用您的计算:
df.groupby('Split_variable')['Value'].apply(lambda x: np.sqrt(np.mean((x**2))))