我有以下数据帧:
Signature Genes Labels Scores Annotation
CELF1 AARS 0 -5.439356884 EMPTY
CELF1 AATF 0 -5.882719549 EMPTY
CELF1 ABCF1 0 -6.011462342 EMPTY
HNRNPC AARS 0 -6.166240409 EMPTY
HNRNPC AATF 0 -6.432658981 EMPTY
HNRNPC ABCF1 0 -6.476526092 EMPTY
FUS AARS 0 -5.646015964 EMPTY
FUS AATF 0 -6.224914841 EMPTY
FUS ABCF1 0 -6.395334389 EMPTY
我想把我的“分数”列根据签名列排序,把“基因”列根据分数列排序,这样
Signature Genes Labels Scores Annotation Rank
CELF1 AARS 0 -5.439356884 EMPTY 1
CELF1 AATF 0 -5.882719549 EMPTY 2
CELF1 ABCF1 0 -6.011462342 EMPTY 3
HNRNPC AARS 0 -6.166240409 EMPTY 1
HNRNPC AATF 0 -6.432658981 EMPTY 2
HNRNPC ABCF1 0 -6.476526092 EMPTY 3
FUS AARS 0 -5.646015964 EMPTY 1
FUS AATF 0 -6.224914841 EMPTY 2
FUS ABCF1 0 -6.395334389 EMPTY 3
我是基于this帖子的。我的代码是这样的:
data=pd.read_csv("trial1.csv",sep='\t')
data['max_score'] = data.groupby(['Signature','Genes'])['Scores'].transform('max').astype(float)
data['rank']=data.groupby('Signature')['max_score'].rank()
但是,我的分数是根据绝对值进行排名的,如下所示:
Signature Genes Labels Scores Annotation Rank
CELF1 ABCF1 0 -6.011462342 EMPTY 1
CELF1 AATF 0 -5.882719549 EMPTY 2
CELF1 AARS 0 -5.439356884 EMPTY 3
HNRNPC ABCF1 0 -6.476526092 EMPTY 1
HNRNPC AATF 0 -6.432658981 EMPTY 2
HNRNPC AARS 0 -6.166240409 EMPTY 3
FUS ABCF1 0 -6.395334389 EMPTY 1
FUS AATF 0 -6.224914841 EMPTY 2
FUS AARS 0 -5.646015964 EMPTY 3
排名不是按绝对值排序的。它是按升序排序的,这是它的默认值。您只需将对
rank()
的调用更改为rank(ascending=False)
。参见documentation。你知道吗相关问题 更多 >
编程相关推荐