在Python中使用Scipy进行方差分析,无需手动键入每个组名
我有一个像这样的df在Python中使用Scipy进行方差分析,无需手动键入每个组名,python,scipy,anova,Python,Scipy,Anova,我有一个像这样的df Ens_prot_ID Ens_gene_ID Sample TPM ppm ppm/TPM 0 ENSP00000416240 ENSG00000109072 liver 2540.4 0.003 0.000001 21597 ENSP00000226218 ENSG00000109072 liver 2540.4 110.000 0.043300 ... 下面的代码不工作,并给出
Ens_prot_ID Ens_gene_ID Sample TPM ppm ppm/TPM
0 ENSP00000416240 ENSG00000109072 liver 2540.4 0.003 0.000001
21597 ENSP00000226218 ENSG00000109072 liver 2540.4 110.000 0.043300
...
下面的代码不工作,并给出“KeyError:0”
我在运行时没有任何问题
from scipy import stats
proteins=df['Ens_prot_ID'].unique()
for prot in proteins:
df[df['Ens_prot_ID'] == prot]['ppm/TPM']
所以问题似乎是f_oneway()不喜欢我的输入形式。有没有办法让函数接受非手工输入的组名?您可以这样做:
stats.f_oneway(*(df[df['Ens_prot_ID'] == prot]['ppm/TPM'] for prot in proteins))
*
允许您向函数传递多个参数:
我还将列表理解更改为a,以防您的DataFrame
非常大
stats.f_oneway(*(df[df['Ens_prot_ID'] == prot]['ppm/TPM'] for prot in proteins))