在熊猫数据框的特定列上使用t.test_ind

时间:2018-07-26 18:45:02

标签: python pandas dataframe

我有一个熊猫数据框,其格式为:

Variable    A1  A2  B1  B2  C1  C2  D1  D2

X   2   3   5   6   13  12  3   3

Y   1   1   7   9   16  19  11  9

Z   3   4   6   6   2   3   53  48

其中A1-A2,B1-B2等是重复测量,而X,Y,Z是要测量的不同变量。

我想对每一行在D1-D2和B1-B2之间进行t检验,然后将每个比较的p值附加到新列中。

期望的结果将是:

Variable    A1  A2  B1  B2  C1  C2  D1  D2  p-val

X   2   3   5   6   13  12  3   3   0.0345

Y   1   1   7   9   16  19  11  9   0.111

Z   3   4   6   6   2   3   53  48  0.0004

先谢谢您。

2 个答案:

答案 0 :(得分:0)

我得到了不同的结果(我猜不出您如何进行T检验),但是您可以使用scipy.stats.ttest_ind对自变量进行t检验,并提取p-结果中的值(输出的第一个索引,有关详细信息,请参阅链接的文档)

from scipy.stats import ttest_ind

df['p-val'] = ttest_ind(df[['B1', 'B2']], df[['D1', 'D2']], axis=1)[1]

>>> df
  Variable  A1  A2  B1  B2  C1  C2  D1  D2     p-val
0        X   2   3   5   6  13  12   3   3  0.037750
1        Y   1   1   7   9  16  19  11   9  0.292893
2        Z   3   4   6   6   2   3  53  48  0.003141

答案 1 :(得分:0)

我猜该方法是正确的。但是我得到的p值略有不同

from scipy import stats
def my_func(x):
    x["p-val"] = stats.ttest_ind([x.D1,x.D2], [x.B1,x.B2]).pvalue
    return x
df = df.apply(my_func, axis=1)

输出:

Variable    A1  A2  B1  B2  C1  C2  D1  D2  p-val
X           2   3   5   6   13  12  3   3   0.037749551350623724
Y           1   1   7   9   16  19  11  9   0.29289321881345254
Z           3   4   6   6   2   3   53  48  0.0031413032318505603