如果我没有任何意义,我道歉,英语不是我的母语,我只有一个星期进入蟒蛇和熊猫。
所以,我有一个很长的转录因子(TF)数据框和很长的必需基因列表,到目前为止我所做的是确定受TF调控的基因是否是必需基因或不。像这样:
In:
df2 = regulon.copy()
lista_genes = (genes['Esenciales'].values.tolist())
df2['Esencialidad'] = (pd.DataFrame(regulon['Target'].isin(lista_genes)))
df2[['Esencialidad']] = df2[['Esencialidad']].astype(str)
df2.ix[df2.Esencialidad == 'True' , 'Esencialidad'] = 'Esencial'
df2.ix[df2.Esencialidad == 'False' , 'Esencialidad'] = 'No esencial'
df2.to_excel("salida2.xlsx", index = False)
df2
Out:
TF Target Regulation Score Esencialidad
0 AccB accB - null Esencial
1 AccB accC - null Esencial
2 AcrR acrA - Weak No esencial
3 AcrR acrB - Weak No esencial
4 AcrR acrR - Weak No esencial
5 AcrR marA - Strong No esencial
6 AcrR marB - Strong No esencial
7 AcrR marR - Strong No esencial
8 AcrR micF - Weak No esencial
9 AcrR soxR - Strong No esencial
10 AcrR soxS - Strong No esencial
11 Ada alkB - Strong No esencial
12 Ada alkB + Strong No esencial
我接下来做的是确定TF调控了多少基因。像这样:
In:
genes_regulados = regulon['TF'].value_counts()
TF = pd.DataFrame(genes_regulados)
TF.reset_index(inplace=True)
TF.rename(columns={'index': 'TF', 'TF': 'Genes_regulados'}, inplace=True)
TF = TF.sort_values('TF').reset_index(drop=True)
TF['Esenciales'] = (pd.DataFrame(regulon['Target'].isin(lista_genes)))
TF
Out:
TF Genes_Regulados
0 AccB 2
1 AcrR 9
2 Ada 6
3 AdiY 8
4 AgaR 11
5 AidB 1
6 AlaS 1
7 AllR 9
我现在要做的是,在一个新专栏中确定,给定TF的那些受调控基因中有多少是必需的,另一列中有多少不是必需的。
我需要你的帮助。我被困住了,我不知道该怎么做。
我正在寻找的输出是这样的:
TF Genes Regulados Esenciales No Esenciales
AcrR 4 0 4
Ada 6 0 6
AdiY 8 0 8
AgaR 11 0 11
AidB 1 0 1
AlaS 1 1 0
AllR 9 0 9
AllS 3 0 3
AlsR 6 0 6
AppY 10 0 10
AraC 19 6 13
更新
感谢JBr,我得到了我需要的东西。现在我想知道是否有办法让它更复杂,并获得有多少基本基因具有正调节,以及有多少必需基因对TF给予了负调节。
我正在寻找的输出是这样的:
TF Genes_regulados Esenciales No Esenciales Esenciales_positivos Esenciales_negativos
AcrR 4 0 4 0 0
Ada 6 0 6 0 0
AdiY 8 0 8 0 0
AgaR 11 0 11 0 0
AidB 1 0 1 0 0
AlaS 1 1 0 0 1
AllR 9 0 9 0 0
AllS 3 0 3 0 0
AlsR 6 0 6 0 0
AppY 10 0 10 0 0
AraC 19 6 13 4 2
感谢。
答案 0 :(得分:0)
apply
是你的朋友
def count_tfs_essential(tf_val, df2, esencial_val):
'''returns count of rows in df2 having specific tf_val and esencial_val'''
df2_con_tf_val = df2[(df2["TF"] == tf_val)]
df2_con_tf_val_y_essencial = df2_con_tf_val[df2_con_tf_val["Esencialidad"] == esencial_val]
count = len(df2_con_tf_val_y_essencial.index)
return count
TF["Esenciales"] = TF["TF"].apply(lambda tf_val: count_tfs_essential (tf_val, df2, "Esencial"))
TF["No Esenciales"] = TF["TF"].apply(lambda tf_val: count_tfs_essential (tf_val, df2, "No esencial"))
*所需的df:*
TF Genes_Regulados Esenciales No Esenciales
0 AccB 2 2 0
1 AcrR 9 0 9
2 Ada 6 0 2
3 AdiY 8 0 0
4 AgaR 11 0 0
5 AidB 1 0 0
6 Alas 1 0 0
7 AllR 9 0 0