带功能的Pandas DataFrame:列变化

时间:2017-07-22 16:37:12

标签: python pandas statsmodels

给出以下DataFrame:

count = np.array([10, 20]) #from first row of Count1 and Count2, respectively
nobs = np.array([30, 65]) #from first row of Nobs1 and Nobs2, respectively
pv = proportions_ztest(count=count,nobs=nobs,value=0,alternative='two-sided')[1] #this returns just the p-value, which is of interest
pv
0.80265091465415639

我想在每行的每个列组(1和2,1和3,2和3)的组合上应用z test for proportions。按列组,我的意思是,例如," Count1"和" Nobs1"。

例如,一个这样的测试将是:

loop

我希望结果(pv)进入名为" p_1_2"的新列(第一行)。或与其各自列对应的逻辑符号。

总之,我面临的挑战是:

  1. 如何每行应用此项。

  2. ...对于上面提到的每个配对组合。

  3. ...其中列名和对数" Count"和" Nobs"列可能会有所不同(假设每个" Count"列总会有一个" Nobs"列。)

  4. 与3相关:例如,我可能有一个名为" 18-24"的列。另一个名为" 18-24_Nobs"。

    提前致谢!

1 个答案:

答案 0 :(得分:2)

至1)和2)对于一次测试,可以对其他测试进行类似编码或在附加循环中进行编码

for i,row in d.iterrows():
    d.loc[i,'test'] = proportions_ztest(count=row['Count1':'Count2'].values,
                                        nobs=row['Nobs1':'Nobs2'].values,
                                        value=0,alternative='two-sided')[1]

for 3)应该可以在循环中使用纯python处理这些情况