Python 从in64数据类型返回中获取不同的对象

Python 从in64数据类型返回中获取不同的对象,python,pandas,format,Python,Pandas,Format,作为一个大功能的一部分,我被最后一行中的一行卡住了。 我应该获得(pandas)数据帧中最高(少数)值的行和列名。因此,我把它拆开,分类,打印最后两行。使用: 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_

作为一个大功能的一部分,我被最后一行中的一行卡住了。 我应该获得(pandas)数据帧中最高(少数)值的行和列名。因此,我把它拆开,分类,打印最后两行。使用:

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类似于第二高值…),但我想以某种方式格式化此输出,以便可以在打印部分中使用不同的部分。例如:

print("sequenc {0} and sequence {1} got the highest simmilarity value:{2}".format(a, b, c))
其中a、b和c应分别为序号4833、序号1761和序号37。。。 如果结果是一个列表或元组,我可以拆分它,但现在我卡住了


PS:另外,当值(示例中的34和37)相同时,我应该打印一些特定的错误消息(比如“超过1对具有相同相似性的序列”)

假设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))

假设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))

我无法将我的结果放入列名称为a、b和c的数据框中。。。所以你在我的问题中看到的是x。如果我想把它转换成一个数据帧,我会这样做:df2=pd.DataFrame(x,columns=['a','b','c'],但这不起作用x是一个系列。dox.reset_index()然后你会有一个数据帧。我应该如何实现一个for循环来给出相似度值,如果有多对序列,那么每对序列都有这个最大值?因此,我应该打印所有的序列对,而不是打印“多对具有相同相似度的序列”,你可以使用
iterrows
到loop通过并打印所有值。检查更新的解决方案。如果对您有帮助,请检查答案是否正确。非常感谢!我现在就知道了!我的函数已完成。因为我不熟悉pandas DataFrame,所以我有这些问题。我无法将我的结果生成列名为a、b和c的数据框…所以您在我的问题中看到的是x。如果我想t将其放入一个数据帧中,我这样做:df2=pd.DataFrame(x,columns=['a','b','c'],但这不起作用x是一个系列然后你会有一个数据帧。我应该如何实现一个for循环来给出相似度值,如果有多对序列,那么每对序列都有这个最大值?因此,我应该打印所有的序列对,而不是打印“多对具有相同相似度的序列”,你可以使用
iterrows
到loop通过并打印所有值。检查更新的解决方案。如果答案对您有帮助,请检查答案是否正确。非常感谢!我现在就知道了!我的函数已完成。因为我不熟悉pandas DataFrame,所以我有以下问题。