Python 如何根据计算条件创建新列?

Python 如何根据计算条件创建新列?,python,pandas,dataframe,numpy,Python,Pandas,Dataframe,Numpy,有两个列A和列老化。需要创建一个名为simulator的新列,其条件(平均值+标准值)为a列。例如,对于所有老化==2,应根据a列中的相应值计算模拟器 我尝试了下面给出的代码,但是当我更改老化值时,模拟器值没有更改。下面提供的是我尝试过的参考数据和代码 # seed the pseudorandom number generator from numpy.random import seed from numpy.random import randint # seed random numbe

有两个列A和列老化。需要创建一个名为simulator的新列,其条件(平均值+标准值)为a列。例如,对于所有老化==2,应根据a列中的相应值计算模拟器

我尝试了下面给出的代码,但是当我更改老化值时,模拟器值没有更改。下面提供的是我尝试过的参考数据和代码

# seed the pseudorandom number generator
from numpy.random import seed
from numpy.random import randint
# seed random number generator
seed(1)
# generate some random numbers
x=pd.DataFrame(randint(0, 10, 20),columns=list('A'))
# reset the seed
seed(1)
# generate some random numbers
x['aging']=pd.DataFrame(randint(1,5,20),columns=list('z'))

x['simulator']=np.where(x['aging']==2,x.A.mean()+x.A.std(),0)
x['simulator']=np.where(x['aging']==4,x.A.mean()+x.A.std(),x['simulator'])

np。其中
首先计算值,然后根据条件选择这些值。因此,在这两种情况下,
x.A.mean()+x.A.std()
都是在整个数据帧上计算的,并且在每种情况下都是相同的数据帧,所选的值是相同的

唯一的区别是,该值仅设置为
x['aging']==2
x['aging']==4
的行,具体取决于条件

如果希望列为每个账龄内的
平均值
+
std
,请使用
groupby
+
transform

gp = x.groupby('aging')['A']
x['simulator'] = gp.transform('mean') + gp.transform('std')

    A  aging  simulator
0   5      2   7.088436
1   8      4   6.835113
2   9      1   9.041928
3   5      1   9.041928
4   0      4   6.835113
5   0      2   7.088436
6   1      4   6.835113
7   7      2   7.088436
8   6      4   6.835113
9   9      1   9.041928
10  2      1   9.041928
11  4      2   7.088436
12  5      1   9.041928
13  2      4   6.835113
14  4      2   7.088436
15  2      1   9.041928
16  4      3   7.621320
17  7      2   7.088436
18  7      3   7.621320
19  9      1   9.041928