我对一般编码很陌生,我正在尝试制作一个程序来为我做一些数据处理。我有两个数据帧,一个包含四个样本的平均值,另一个包含这四个样本相对标准偏差的数据帧。如果相对标准偏差值高于某个数字,我想让平均值为零,我该怎么做?我在想一个if语句,但我不知道从哪里开始构建它。
你可以试试这样的东西-
df = pd.DataFrame({'sample':['a','a','a','b','b','b','c','c','c','d','d','d'],
'value':[10,20,10,14,24,5,12,13,14,12,4,5]})
means = df.groupby(['sample']).agg(mean=('value','mean'))
stds = df.groupby(['sample']).agg(std=('value','std'))
>>> means
mean
sample
a 13.333333
b 14.333333
c 13.000000
d 7.000000
>>> stds
std
sample
a 5.773503
b 9.504385
c 1.000000
d 4.358899
means
和stds
是你在问题中提到的两个数据帧——means
表示平均值,stds
表示标准差。
现在您可以尝试以下操作(变量threshold
保持标准偏差的截止值(-
import numpy as np
threshold = 4
stats = pd.concat([means, stds], axis=1)
>>> stats
mean std
sample
a 13.333333 5.773503
b 14.333333 9.504385
c 13.000000 1.000000
d 7.000000 4.358899
stats['mean'] = np.where(stats['std']>threshold, 0, stats['mean'])
>> stats
mean std
sample
a 0.0 5.773503
b 0.0 9.504385
c 13.0 1.000000
d 0.0 4.358899