<p>如果我理解正确,您可以使用Groupby获得每个特征的平均值,然后在一个数据集中获得每个特征的p值。首先我要创建数据集</p>
<pre><code>a = {'Feature': ['X1','X2','X3','X4','X5']}
Results = pd.DataFrame(data = a)
Results.set_index('Feature')
</code></pre>
<p>然后,为了获得特征的平均值,您可以使用group by并将结果发送到此新数据集</p>
<pre><code>Results['Mean-DataSET1'] = df1.groupby('feature')['value'].transform('mean')
Results['Mean-DataSET2'] = df2.groupby('feature')['value'].transform('mean')
</code></pre>
<p>现在据我所知,p-tests返回整个列的值,因此我将在一个位置获取两个值列,然后将数据拆分为临时数据集,并获取这些数据的p值</p>
<pre><code>df['value2'] = df2['value']
xone = df[(df['col2'] == 'X1')]
xtwo = df[(df['col2'] == 'X2')]
xthree = df[(df['col2'] == 'X3')]
xfour = df[(df['col2'] == 'X4')]
xfive = df[(df['col2'] == 'X5')]
</code></pre>
<p>这样你就可以像以前一样执行相同的函数,得到所有的值</p>
<pre><code>p_vals = ttest_ind(xone['value'], xone['value2']).pvalue, ttest_ind(xtwo['value'], xtwo['value2']).pvalue, ttest_ind(xthree['value'], xthree['value2']).pvalue, ttest_ind(xfour['value'], xfour['value2']).pvalue, ttest_ind(xfive['value'], xfive['value2']).pvalue
Results['P_value'] = p_vals
</code></pre>
<p>因此,数据子集上的示例输出如下所示:</p>
<pre><code> Feature mean1 mean2 P_value
X1 1.510000 1.633333 0.905175
X2 -0.233333 -2.266667 0.326891
X3 -0.033333 1.630000 0.377542
</code></pre>
<p>这不是最优雅的答案,但现在应该还可以,因为您只有小数据集</p>