Panda中有没有一种方法可以在一个数据帧中搜索,以确定在另一个数据框架中发生了什么



我对一般编码很陌生,我正在尝试制作一个程序来为我做一些数据处理。我有两个数据帧,一个包含四个样本的平均值,另一个包含这四个样本相对标准偏差的数据帧。如果相对标准偏差值高于某个数字,我想让平均值为零,我该怎么做?我在想一个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

meansstds是你在问题中提到的两个数据帧——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

相关内容

最新更新