如何按Python(pandas)列中的出现次数对数据框进行排序

用户名

我正在尝试使用python中的熊猫根据我的数据(化学物质和蛋白质之间的分数)创建一个数据框。

我希望我的数据框首先显示出现次数最多的蛋白质,因此我以前对数据进行了排序。但是,当我制作数据框时,没有得到预期的结果。

这是我的数据样本:

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  )
耶斯列尔

我认为你需要sort_valuesnotnullsum,并得到索引cols懒惰使用subset

df1 = df.pivot(index='chemicals', columns='proteins', values='scores')

cols = df1.notnull().sum(axis=0).sort_values(ascending=False).index
print cols
Index([u'10116.ENSRNOP00000003921', u'10116.ENSRNOP00000008952',
       u'10116.ENSRNOP00000004027', u'10116.ENSRNOP00000001021'],
      dtype='object', name=u'proteins')

print df1[cols]
proteins      10116.ENSRNOP00000003921  10116.ENSRNOP00000008952  \
chemicals                                                          
CID000000006                     196.0                       NaN   
CID000000051                     246.0                       NaN   
CID000000085                     196.0                       NaN   
CID000000119                     247.0                       NaN   
CID000000134                       NaN                     159.0   
CID000000135                       NaN                     157.0   
CID000000174                       NaN                     439.0   
CID000000175                       NaN                       NaN   
CID000000177                       NaN                       NaN   

proteins      10116.ENSRNOP00000004027  10116.ENSRNOP00000001021  
chemicals                                                         
CID000000006                       NaN                       NaN  
CID000000051                       NaN                       NaN  
CID000000085                       NaN                       NaN  
CID000000119                       NaN                       NaN  
CID000000134                       NaN                       NaN  
CID000000135                       NaN                       NaN  
CID000000174                       NaN                       NaN  
CID000000175                       NaN                     858.0  
CID000000177                     760.0                       NaN  

reindex_axis

print df1.reindex_axis(cols, axis=1)
proteins      10116.ENSRNOP00000003921  10116.ENSRNOP00000008952  \
chemicals                                                          
CID000000006                     196.0                       NaN   
CID000000051                     246.0                       NaN   
CID000000085                     196.0                       NaN   
CID000000119                     247.0                       NaN   
CID000000134                       NaN                     159.0   
CID000000135                       NaN                     157.0   
CID000000174                       NaN                     439.0   
CID000000175                       NaN                       NaN   
CID000000177                       NaN                       NaN   

proteins      10116.ENSRNOP00000004027  10116.ENSRNOP00000001021  
chemicals                                                         
CID000000006                       NaN                       NaN  
CID000000051                       NaN                       NaN  
CID000000085                       NaN                       NaN  
CID000000119                       NaN                       NaN  
CID000000134                       NaN                       NaN  
CID000000135                       NaN                       NaN  
CID000000174                       NaN                       NaN  
CID000000175                       NaN                     858.0  
CID000000177                     760.0                       NaN  

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何按多个列对数据框进行排序

如何使用python pandas根据特定的(字符串)列对数据框进行排序?

按第一列Pandas对数据框进行排序

如何按不在数据框中的数组对数据框进行排序

如何按R中的另一个数据框对数据框中的列顺序进行排序?

自然排序以按列名对数据框的列进行排序

按列对数据框多索引级别进行排序

如何按降序对数据框进行排序

在一列上按另一列对数据框进行排序-Pandas

Python数据框:如何返回列中的出现次数?

如何在Julia中按多个列对数据框进行排序

如何按R中每列的最后一个值对数据框中的列进行重新排序

按R中的多个列(一组较大的列)对数据框进行排序

在用户列Python Pandas中的“成本中心”列及其用户对数据框进行排序

如何计算列数据框Python中的出现次数

按R中的ALL列对数据框进行排序

按因子对数据框列进行排序

按字符和日期列对数据框进行排序

如何按R中的列名对数据框进行排序?

按数字列对数据框进行排序

按列对数据框中的某些行进行排序

如何按不在数据框中的数组对数据框进行排序

Pandas:按第二个数据框排序索引对数据框列进行排序

按出现次数对python pandas数据框中的项目进行分组

如何按字母顺序按索引值对数据框的列进行排序

按列对数据框进行排序

R:按字母数字列对数据框中的所有列进行排序

如何按所有列的中位数对数据框列进行排序

如何按 Pandas 中的列数对数据进行分组?