我正在尝试使用Python中的pandas从我的数据(化学物质和蛋白质之间的分数)创建数据帧。
我希望我的数据帧首先显示出现最多的蛋白质,所以我之前对我的数据进行了排序。但是当我创建数据帧时,它没有得到预期的结果。
这是我的数据样本:
chemicals prots scores
CID000000006 10116.ENSRNOP00000003921 196
CID000000051 10116.ENSRNOP00000003921 246
CID000000085 10116.ENSRNOP00000003921 196
CID000000119 10116.ENSRNOP00000003921 247
CID000000134 10116.ENSRNOP00000008952 159
CID000000135 10116.ENSRNOP00000008952 157
CID000000174 10116.ENSRNOP00000008952 439
CID000000175 10116.ENSRNOP00000001021 858
CID000000177 10116.ENSRNOP00000004027 760
您可以看到,“10116.ENSRNOP00000003921”是我数据中出现最多的蛋白质。
因此,我希望能够得到类似于:
10116.ENSRNOP00000003921 10116.ENSRNOP00000008952
CID000000006 196
CID000000051 246
CID000000085 196
CID000000119 247
CID000000134 159
CID000000135 157
CID000000174 439
以下是我的代码:
import pandas as pd
df_rat= pd.read_csv("dt_matrix_rat.csv",sep="\t", header=True)
df_rat.columns = ['chemicals','proteins','scores']
df_rat1 = df_rat.pivot(index='chemicals', columns='proteins', values='scores')
df_rat1.to_csv("rat_matrix.csv", sep='\t', index=True )
collections.Counter.most_common()
来获取出现次数,但是看起来你已经有了这些... 剩下的部分有点像数据透视表:https://en.wikipedia.org/wiki/Pivot_table - Swier