我有一个看起来像这样的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
...
以下代码无效,并提供“KeyError:0”
from scipy import stats
proteins=df['Ens_prot_ID'].unique()
stats.f_oneway([df[df['Ens_prot_ID'] == prot]['ppm/TPM'] for prot in proteins])
我没有遇到任何问题
from scipy import stats
proteins=df['Ens_prot_ID'].unique()
for prot in proteins:
df[df['Ens_prot_ID'] == prot]['ppm/TPM']
所以似乎问题是f_oneway()不喜欢我的输入形式。有没有办法让函数接受未手动输入的组名?
答案 0 :(得分:0)
你可以这样做:
stats.f_oneway(*(df[df['Ens_prot_ID'] == prot]['ppm/TPM'] for prot in proteins))
*
允许您将多个参数传递给函数:https://pythontips.com/2013/08/04/args-and-kwargs-in-python-explained/
我还将列表理解更改为generator comprehension,以防DataFrame
非常大。