有什么方法可以创建一个新列,其中包含每个列值的高斯分布/正态分布,而每个列值对应另一个不同的列值?在
我的意思是,如果我有两个具有以下结构的数据帧:
>> Original Dataframe 1
Samp Age Cs
1 A 51 msi
2 B 62 cin
3 C 55 msi
4 D 70 ebv
5 E 56 gs
....
>> Original DataFrame 2
Samp Cs Age
0 A cin 51
1 A ebv 51
2 A gs 51
3 A msi 51
4 B cin 62
5 B ebv 62
6 B gs 62
7 B msi 62
8 C cin 55
9 C ebv 55
10 C gs 55
11 C msi 55
12 D cin 70
13 D ebv 70
14 D gs 70
15 D msi 70
16 E cin 56
17 E ebv 56
18 E gs 56
19 E msi 56
...
如您所见,原始数据帧2是原始数据帧1中CS列的唯一值的n行重复。在
为了实现我的目标,我需要从原始数据帧1到所有唯一的Cs值中检索平均值和标准差,因此,我可以进一步将它应用于ageage列中的原始数据帧2,以获得一个新的df-所需的数据帧,其中包含一个新的列概率。在
由于本例中原始数据帧1的平均值和标准差为:
^{pr2}$有没有办法输出以下数据帧?在
^{3}$到目前为止,我一直在努力做到:
def get_age_cs_probs(df):
df['Probability'] = df.groupby('Cs').Age.apply(lambda x:
(1/(np.sqrt(2*3.14*(x.std()**2))))*(np.exp(-(((x-x.mean())**2)/(2*(x.std()**2))))))
return df
scipy.stats.zmap
将根据不同的数组给您数组的z分数。在这个结果可以输入
scipy.stats.norm.cdf()
,它将把你的z分数转换成概率。在查看这两个函数,看看是否要指定不同的df或其他值而不是default。在
我有一个答案,它为每个'Cs'值生成一个概率列表列表,但是不能很清楚地找到一个将其返回到df2的方法。在
这与您的预期输出不太匹配,但是如果您的df1具有您在问题中列出的属性(即相同的m和sd值),则可以。在
相关问题 更多 >
编程相关推荐