2016-12-21 97 views
1

作爲一個大功能的一部分,我堅持使用最後一行。 我應該在(熊貓)數據框中獲取最高(少數)值的行和列名稱。爲此,我將其拆分,分類並打印最後2行。使用:從in64數據類型中獲取不同的對象返回

df2=zerotriangle_frame.unstack() 
sorted_df = df2.sort_values(inplace=True) 
x = df2[-2:] 

這導致:

seq_6120 seq_1761 34 
seq_4833 seq_1761 37 
dtype: int64 

這是良好的(分別爲:seq_4833和seq_1761是行和列名類似最高值(最高序列在上下文中數據幀,seq_6120和seq_1761 simmilarity)類似於第二高的值......)但我想以某種方式格式化該輸出,以便我可以在打印部分中使用不同的部分。例如:

print("sequenc {0} and sequence {1} got the highest simmilarity value:{2}".format(a, b, c)) 

其中a,b和c應seq_4833,seq_1761和37分別... 如果結果是一個列表或元組,我可以把它分解,但現在我卡住了。 PS:另外,當值(例如34和37)相同時,我應該打印一些特定的錯誤信息(如'多於一對序列具有相同的相似性')。

回答

0

假設df2是您的最終數據框,那麼您可以篩選所有等於最大值的行並編寫if語句來生成輸出。

# assuming df2 is a dataframe with columns a,b,c 
df3 = df2[df2.c == df2.c.max()] 

if len(df3) == 1: 
    print("sequence {0} and sequence {1} got the highest simmilarity value:{2}".format(df3.a.values[0], df3.b.values[0], df3.c.values[0])) 
else: 
    for i, row in df3.iterrows(): 
     print("sequence {0} and sequence {1} got the same simmilarity value:{2}".format(row.a, row.b, row.c)) 
+0

這是莫名其妙的問題...... –

+0

我不能讓我的結果到數據幀列名的a,b和c ...那麼,你在我的問題看爲x。如果我想把它變成一個數據框,我會這樣做:df2 = pd.DataFrame(x,columns = ['a','b','c']但不起作用 –

+0

X是一個系列。 reset_index()然後你將有一個數據幀 –