我的Dataframe中有一列的值如下所示(我想按此列对我的Dataframe进行排序):
Mutations=['A67D','C447E','C447F','C447G','C447H','C447I','C447K','C447L','C447M','C447N','C447P','C447Q','C447R','C447S','C447T','C447V','C447W','C447Y','C447_','C92A','C92D','C92E','C92F','C92G','C92H','C92I','C92K','C92L','C92M','C92N','C92P','C92Q','C92R','C92S','C92T','C92V','C92W','C92_','D103A','D103C','D103F','D103G','D103H','D103I','D103K','D103L','D103M','D103N','D103R','D103S','D103T','D103V','silent_C88G','silent_G556R']
基本上所有的值都是Char_1-Digit-Char_2
的格式,我想将它们排序为Digit
为最高优先级,Char_2
为次高优先级。
我想我可以用sorted()
来实现这个功能,把这个列表排序函数作为我的sorted( , key=)
:
def alpha_numeric_sort_key(unsorted_list):
return int( "".join( re.findall("\d*", unsorted_list) ) )
这对列表有效。我对我的dataframe做了同样的尝试,但是得到了这个错误:
df = raw_df.sort_values(by='Mutation',key=alpha_numeric_sort_key,ignore_index=True) #sorts values by one letter amino acid code
TypeError: expected string or bytes-like object
我只需要了解什么是正确的方式来了解如何使用df.sort_values()
中的key=
的方式,可以理解的人有一个中级水平的经验使用Python。
我还提供了我的数据框架的头,如果这有助于回答我的问题,如果没有,忽略它。
谢谢!
raw_df=pd.DataFrame({'0': {0: 100, 1: 100, 2: 100, 3: 100}, 'Mutation': {0: 'F100D', 1: 'F100S', 2: 'F100M', 3: 'F100G'},
'rep1_AGGTTGGG-TCGATTAG': {0: 2.0, 1: 15.0, 2: 49.0, 3: 19.0},
'Input_AGGTTGGG-TCGATTAG': {0: 48.0, 1: 125.0, 2: 52.0, 3: 98.0}, 'rep2_GTGTGGTG-TGTTCTAG': {0: 8.0, 1: 40.0, 2: 33.0, 3: 11.0}, 'WT_plasmid_GTGTGGTG-TGTTCTAG': {0: 1.0, 1: 4.0, 2: 1.0, 3: 1.0},
'Amplicon': {0: 'Amp1', 1: 'Amp1', 2: 'Amp1', 3: 'Amp1'},
'WT_plas_norm': {0: 1.9076506328630974e-06, 1: 7.63060253145239e-06, 2: 1.9076506328630974e-06, 3: 1.9076506328630974e-06},
'Input_norm': {0: 9.171121666392808e-05, 1: 0.0002388312933956, 2: 9.935381805258876e-05, 3: 0.0001872437340221},
'escape_rep1_norm': {0: 4.499235130027895e-05, 1: 0.000337442634752, 2: 0.0011023126068568, 3: 0.0004274273373526},
'escape_rep1_fitness': {0: -1.5465897459555915, 1: -1.087197258196361, 2: -0.1921857678502714, 3: -0.8788509789836517} } )
1条答案
按热度按时间xqnpmsa81#
如果您查看
sort_values
中参数key
的定义,它清楚地表示:它应该期望一个Series并返回一个与输入具有相同形状的Series。它将由独立地应用于中的每一列。
不能使用单个标量作为键进行排序。
您可以通过两种方式进行排序:
1.第一种方法:
1.将提取的值指定为临时列,并使用指定这些列的
by
参数对其进行排序: